我正在使用由多个文件组成的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;
但它仍然没有用。有人可以解释一下吗?
更新:
我在hive控制台中设置这些参数。而且,我的输出不是写入hdfs而是写入亚马逊s3。
答案 0 :(得分:0)
很难说,因为我不知道你在哪里设置参数。对我来说,只发出一个输出文件的最佳方法是在MR作业中使用ToolRunner
实现。可在此处找到好的手册Hadoop: Implementing the Tool interface for MapReduce driver。
您可以直接从CLI指定输出文件的数量,如下所示:
-D mapred.reduce.tasks=NumberOfOutputs
还可以使用DFS命令-getmerge:
hdfs dfs -getmerge sourceDirectory OutputFile.txt
希望有所帮助
答案 1 :(得分:0)
如果输入数据很大,则建议将减速器设置为1。尝试使用dfs -getmerge命令。