连接SequenceFileOutputFormat的reducer输出

时间:2011-09-14 21:47:05

标签: java hadoop reducers

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

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

hadoop fs -cat输出/部分*> fullOutput

如果没有,那么使用multiple的首选方法是什么 reducers然后将所有输出都归为一个文件?

非常感谢,

- 艺术

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

  4. 我过去常担心这一点。现在我使用更少的reducer并避免在较小和临时文件上进行压缩。