【问题标题】:concatenating reducer outputs from SequenceFileOutputFormat连接来自 SequenceFileOutputFormat 的 reducer 输出
【发布时间】:2023-04-01 13:47:01
【问题描述】:

我有一份使用 100 个减速器配置的工作 setOutputFormat(SequenceFileOutputFormat.class);

作业运行后,我可以通过以下方式合并所有零件文件吗? 以下命令并使事情正常工作 压缩?

hadoop fs -cat output/part* > fullOutput

如果不是,那么使用多个的首选方法是什么 减速器,然后将所有输出集中到一个文件中?

非常感谢,

--艺术

【问题讨论】:

    标签: java hadoop reducers


    【解决方案1】:

    您使用什么压缩方式?对于某些编解码器,这肯定行不通。例如,Lzop 编解码器在每个文件的开头都有标头,因此如果您只是连接文件,它们将有散布在其中的标头。 Lzo(没有尾随'p')编解码器不包括标题 - 直到你的问题我不明白它为什么存在。我认为这些部分很有可能会连接在一起。

    1. 如果您能够在单个减速器中处理您的工作,您可以这样做。或者您可以使用更少的 reducer 运行它,而不必担心合并文件,因为您可以将目录用作下一个作业的输入。

    2. 您可以运行后续 MR 作业(IdentityMapper、IdentityReducer),使用单个 reducer 组合您的输出文件。

    3. 你可以解压然后重新压缩。

      hadoop dfs -cat output/* | lzop -d -c > full

    我曾经有点担心这个。现在我使用更少的 reducer,并避免压缩较小的临时文件。

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2012-08-07
      • 1970-01-01
      • 2012-06-10
      • 2012-03-05
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2016-09-10
      相关资源
      最近更新 更多