Hadoop MapReduce输出压缩的最简单高效方法

3

我可以使用以下方法将MapReduce输出压缩为gzip格式:

"mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec"

实现Hadoop的zip编解码器是否容易?Zip是一个容器,但我需要每个存档只有一个文件,因此创建带有压缩编解码接口的ZipCodec是否容易?

或者,也许有一种有效的方法将gz文件转换为zip文件,因为它们都可以使用相同的deflate算法?

1个回答

3

没问题,您可以使用java.util.zip.ZipOutputStream进行包装。

您可以通过实现自己的编解码器来实现这一点,方法是扩展org.apache.hadoop.io.compress.DefaultCodec

在此编解码器中,您可以通过分别扩展org.apache.hadoop.io.compress.CompressorStreamorg.apache.hadoop.io.compress.DecompressorStream来包装Java zip流。

最后,您需要重写createInputStreamcreateOutputStream方法,并在那里返回包装流的新实例。

虽然需要写一些代码,但我相信肯定已经有现成的实现了(我记得几年前也出现在Hadoop发布版中)。


谢谢,非常有帮助的指引。 - modular
@Thomas - 有可能提供一些例子吗? - Dynite
谢谢@Thomas,这真的很有帮助。 - Neelesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接