将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;

但它仍然不起作用。有人能解释一下吗?

更新:

我正在hive控制台设置这些参数。此外,我的输出没有写入hdfs,而是写入Amazon s3。

很难说,因为我不知道你在哪里设置的参数。对我来说,只发出一个输出文件的最好方法是在您的MR作业中使用ToolRunner实现。好的手册可以在这里找到Hadoop:实现MapReduce驱动的工具接口。

那么你可以直接从CLI中指定输出文件的数量,像这样:

-D mapred.reduce.tasks=NumberOfOutputs

也可以使用DFS命令-getmerge:

hdfs dfs -getmerge sourceDirectory OutputFile.txt

希望有所帮助

如果输入数据非常大,则不建议将reducer设置为1。试试DFS -getmerge命令。

相关内容

  • 没有找到相关文章

最新更新