3

我可以将mapreduce输出压缩到gzip

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

为hadoop实现zip编解码器会很简单吗?ZipCodecZip是容器,但我每个存档只需要一个文件,那么使用CompressionCodec界面创建是否容易?

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

4

1 回答 1

3

没什么大不了的,你可以包装一个java.util.zip.ZipOutputStream.

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

org.apache.hadoop.io.compress.CompressorStream在此编解码器中,您通过分别扩展来包装 java zip 流org.apache.hadoop.io.compress.DecompressorStream

最后,您必须重写createInputStreamandcreateOutputStream方法并在那里返回包装流的新实例。

仍然有一些编码,我很确定某处必须有一个已经存在的实现(我可能记得几年前它也在 Hadoop 版本中)。

于 2012-08-16T14:59:40.047 回答