我有一份工作,使用100个减速器配置 setOutputFormat(SequenceFileOutputFormat.class);
作业运行后,我可以通过组合所有零件文件 以下命令,并使事情正常工作 压缩?
hadoop fs -cat输出/部分*> fullOutput
如果没有,那么使用multiple的首选方法是什么 reducers然后将所有输出都归为一个文件?
非常感谢,
- 艺术
答案 0 :(得分:0)
你使用什么压缩?对于一些编解码器,这肯定不会起作用。例如,Lzop编解码器在每个文件的开头都有标题,因此如果您只是加入文件,它们就会有散布在其中的标题。 Lzo(没有尾随'p')编解码器不包括标题 - 直到你的问题我不明白它为什么存在。我认为这些部分很有可能连在一起。
如果您能够在一台减速机中处理您的工作,您可以这样做。或者你可以使用更少的reducer运行它,而不用担心组合文件,因为你可以使用该目录作为下一个工作的输入。
您可以运行后续MR作业(IdentityMapper,IdentityReducer),它使用单个reducer组合您的输出文件。
您可以解压缩然后重新压缩。
hadoop dfs -cat output/* | lzop -d -c > full
我过去常担心这一点。现在我使用更少的reducer并避免在较小和临时文件上进行压缩。