拉上拉链的Hadoop MapReduce的
问题描述:
我可以压缩的输出MapReduce的输出与拉上拉链的Hadoop MapReduce的
"mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec"
gzip压缩的最简单有效的方法会不会是直接实现压缩编解码器的Hadoop? Zip是容器,但每个存档只需要一个文件,那么使用CompressionCodec
接口创建ZipCodec
会很容易吗?
或者,也许有一种有效的方法将gz
文件转换为zip
,因为它们可以使用相同的放气算法?
答
没什么大不了的,你可以换一个java.util.zip.ZipOutputStream
。
你可以通过实现你自己的编解码器来完成这个工作,这是通过扩展org.apache.hadoop.io.compress.DefaultCodec
来完成的。
在此编码解码器中,您分别通过扩展org.apache.hadoop.io.compress.CompressorStream
来包装java zip数据流org.apache.hadoop.io.compress.DecompressorStream
。
最后,您必须重写createInputStream
和createOutputStream
方法,并在那里返回包装流的新实例。
还是有点编码,我敢肯定在某个地方必须有一个已经存在的实现(我可能记得它也是在几年前的一个Hadoop版本中)。
谢谢,非常有帮助的方向。 – modular 2012-08-16 16:02:35
@Thomas - 任何可能的例子? – Dynite 2012-12-20 10:50:30
我也面临同样的问题。请分享一些代码.. – SUDARSHAN 2017-03-03 05:30:51