将hadoop作业的输出发送到单个文件

fruv7luv  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(268)

我正在使用hadoop处理一些数据,hadoop由多个文件组成。现在,我希望hadoop只在输出中发出一个文件。我设置了以下参数。

set mapred.reduce.tasks=1;
    set hive.exec.reducers.max = 1;
    set hive.exec.compress.output=true;
    set hive.exec.compress.intermediate=true;

但还是不行。有人能解释一下吗?
更新:
我正在配置单元控制台中设置这些参数。此外,我的输出不是写入hdfs,而是写入amazons3。

ss2ws0br

ss2ws0br1#

如果输入数据很大,则不建议将减速器设置为1。尝试dfs-getmerge命令。

qij5mzcb

qij5mzcb2#

很难说,因为我不知道你在哪里设置参数。对我来说,只发出一个输出文件的最佳方法是使用 ToolRunner 在你的mr工作中实现。好的手册可以在这里找到hadoop:实现mapreduce驱动程序的工具接口。
然后可以从cli中指定输出文件的数量,如下所示:

-D mapred.reduce.tasks=NumberOfOutputs

也可以使用dfs命令-getmerge:

hdfs dfs -getmerge sourceDirectory OutputFile.txt

希望有帮助

相关问题