【问题标题】:Emit output of hadoop job to a single File将 hadoop 作业的输出发送到单个文件
【发布时间】:2014-10-01 14:29:24
【问题描述】:

我正在使用由多个文件组成的 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。

【问题讨论】:

  • 你在哪里设置这些参数?

标签: hadoop mapreduce


【解决方案1】:

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

您可以像这样直接从 CLI 指定输出文件的数量:

-D mapred.reduce.tasks=NumberOfOutputs

也可以使用DFS命令-getmerge:

hdfs dfs -getmerge sourceDirectory OutputFile.txt

希望对你有帮助

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多