我可以压缩MapReduce的输出,为gzip
"mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec"
将它直接实现Hadoop的压缩编解码器? Zip是容器,但我需要每个归档只有一个文件,因此它很容易创建ZipCodec
与CompressionCodec
接口?
或者,也许有转换的有效途径gz
文件zip
S,因为他们可以使用相同的deflate算法?
我可以压缩MapReduce的输出,为gzip
"mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec"
将它直接实现Hadoop的压缩编解码器? Zip是容器,但我需要每个归档只有一个文件,因此它很容易创建ZipCodec
与CompressionCodec
接口?
或者,也许有转换的有效途径gz
文件zip
S,因为他们可以使用相同的deflate算法?
没什么大不了的,你可以用一个java.util.zip.ZipOutputStream
。
您可以通过实现自己的编解码器,而扩展做为此org.apache.hadoop.io.compress.DefaultCodec
。
在此编解码器包你通过扩展Java拉链流org.apache.hadoop.io.compress.CompressorStream
分别org.apache.hadoop.io.compress.DecompressorStream
。
最后,你必须重写createInputStream
和createOutputStream
方法并返回那里的包裹流的新实例。
还是有一点的编码,我敢肯定,必须有一个已经存在的地方实施(我可能还记得它也是在一个Hadoop发行年前)。