我正在使用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。
2条答案
按热度按时间ss2ws0br1#
如果输入数据很大,则不建议将减速器设置为1。尝试dfs-getmerge命令。
qij5mzcb2#
很难说,因为我不知道你在哪里设置参数。对我来说,只发出一个输出文件的最佳方法是使用
ToolRunner
在你的mr工作中实现。好的手册可以在这里找到hadoop:实现mapreduce驱动程序的工具接口。然后可以从cli中指定输出文件的数量,如下所示:
也可以使用dfs命令-getmerge:
希望有帮助