Java 压缩hadoop mapreduce输出的最简单有效方法

Java 压缩hadoop mapreduce输出的最简单有效方法,java,hadoop,zip,gzip,Java,Hadoop,Zip,Gzip,我可以使用 "mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec" 为hadoop实现zip编解码器会很简单吗?Zip是一个容器,但我每个存档只需要一个文件,所以使用CompressionCodec接口创建ZipCodec是否容易 或者,也许有一种有效的方法可以将gz文件转换为zips,因为它们可以使用相同的deflate算法?没什么大不了的,您可以包装java.util.zip.ZipOutputSt

我可以使用

"mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec"
为hadoop实现zip编解码器会很简单吗?Zip是一个容器,但我每个存档只需要一个文件,所以使用
CompressionCodec
接口创建
ZipCodec
是否容易


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

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

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

在这个编解码器中,通过分别扩展
org.apache.hadoop.io.compress.CompressorStream
来包装java压缩流
org.apache.hadoop.io.compress.DecompressorStream

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


还是一点编码,我很确定一定有一个已经存在的实现(我可能记得几年前Hadoop版本中也有)

谢谢,非常有用的指导。@Thomas-有可能的例子吗?谢谢@Thomas这真的很有用。