【发布时间】:2012-05-01 11:28:27
【问题描述】:
我有一个使用 Hadoop 1.0.0 的集群,我想运行一个 MR 作业来处理巨大的 bz2 文件。在 0.21.0 版本中,Bz2 编解码器支持分割输入文件,但是我在 1.0.0 中找不到此功能。是否有任何相当于在 1.0.0 中拆分 bz2 输入的方法?或者我应该为此手动应用 0.21.0 的补丁?
【问题讨论】:
我有一个使用 Hadoop 1.0.0 的集群,我想运行一个 MR 作业来处理巨大的 bz2 文件。在 0.21.0 版本中,Bz2 编解码器支持分割输入文件,但是我在 1.0.0 中找不到此功能。是否有任何相当于在 1.0.0 中拆分 bz2 输入的方法?或者我应该为此手动应用 0.21.0 的补丁?
【问题讨论】:
1.x 版本的 Hadoop 尚不支持任何可拆分的压缩编解码器。 它确实支持 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
【讨论】:
可以在here 找到 BZip2 编解码器 API。
【讨论】:
您可以尝试使用 Pig,它提供了 Hadoop 1.0.0 所缺乏的功能。 Pig 将分割输入文件。
【讨论】:
您可以使用org.apache.hadoop.io.compress.BZip2Codec 进行输入拆分。
【讨论】: