如何解压lzo\u deflate文件?

0vvn1miw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(524)

我用lzo压缩输出。我试过这个:kevin weil的hadoop lzo项目,然后用 LzoCodec 和我的工作一起上课:

TextOutputFormat.setOutputCompressorClass(job, LzoCodec.class);

现在压缩效果很好。
我的问题是压缩结果是 .lzo_deflate 我无法解压的文件。
lzop实用程序似乎不支持这种类型的文件。 LzopCodec 应该给一个 .lzo 文件,但它没有工作,但它在同一个包作为 LzoCodec ( org.apache.hadoop.io.compress )这可能涉及到兼容性问题,因为我使用了旧的api(0.19)来实现压缩。
这个问题的答案建议使用python解决方案,但是我需要java。
我正在使用hadoop1.1.2和java6。

lzfw57am

lzfw57am1#

这个答案帮助我从 .lzo_deflate 要设置所需的输出格式:

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-0.20.2-cdh3u2.jar \
  -Dmapred.output.compress=true \
  -Dmapred.compress.map.output=true \
  -Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
  -input <input-path> \
  -output $OUTPUT \
  -mapper "/bin/cat"
ncecgwcz

ncecgwcz2#

.lzo_deflate 表示没有通常的头和尾的lzo流。所以你需要把生肉包起来 .lzo_deflate 具有lzop所期望的头和尾的流。或者至少是标题,然后忽略缺少的尾部的错误。您需要查看页眉和尾部文档。
名称中的“deflate”是一个奇怪的选择,但它指的是gzip类比,其中没有gzip头和尾的原始压缩数据格式称为deflate。

5kgi1eie

5kgi1eie3#

我也遇到了同样的问题。原因是我没有使用正确的编解码器。请检查作业配置中的编解码器。

job.getConfiguration().set("mapred.output.compression.codec","com.hadoop.compression.lzo.LzopCodec");

相关问题