我有一个使用 Hadoop 1.0.0 的集群,我想运行一个 MR 作业来处理巨大的 bz2 文件。在 0.21.0 版本中,Bz2 编解码器支持分割输入文件,但是我在 1.0.0 中找不到此功能。是否有任何相当于在 1.0.0 中拆分 bz2 输入的方法?或者我应该为此手动应用 0.21.0 的补丁?
4 回答
Hadoop 1.x 版本尚不支持任何可拆分的压缩编解码器。它确实支持 Bzip2,但不可拆分。这取决于这个问题 https://issues.apache.org/jira/browse/HADOOP-7823 目前看起来这个功能将出现在 Hadoop 1.1.0 中
解决此问题的最简单方法是查看当前处于测试阶段的 cloudera 包装 cdh4。它具有最新的 Bzip2 实现,可以进行拆分。
参考:
Hadoop 1.0.0 API:
http://hadoop.apache.org/common/docs/r1.0.0/api/org/apache/hadoop/io/compress/BZip2Codec.html
public class BZip2Codec
extends Object
implements CompressionCodec
Hadoop 0.23.1(AFAIK 将是 Hadoop 2.x)API:
http://hadoop.apache.org/common/docs/r0.23.1/api/org/apache/hadoop/io/compress/BZip2Codec.html
public class BZip2Codec
extends Object
implements SplittableCompressionCodec
BZip2 编解码器 API 可在此处找到。
您可以尝试使用 Pig,它提供了 Hadoop 1.0.0 所缺乏的功能。Pig 将分割输入文件。
您可以org.apache.hadoop.io.compress.BZip2Codec
用于输入拆分。