BZip2文件在Hadoop中读取

时间:2012-12-26 03:37:47

标签: hadoop gzip mapper bzip2

我听说我们可以使用多个映射器在Hadoop中并行读取一个bzip2文件的不同部分,以提高性能。但搜索后我找不到相关的样本。感谢是否有人可以指向相关的代码段。感谢。

BTW:gzip具有相同的功能(多个映射器并行处理一个gzip文件的不同部分)。

2 个答案:

答案 0 :(得分:3)

如果你看一下:http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/30662, 你会发现bzip2格式确实是可拆分的,多个映射器可以在一个文件上工作。补丁是在https://issues.apache.org/jira/browse/HADOOP-4012提交的。但是,它似乎仅在HADOOP 0.21.0之上可用。

从个人经验来看,为了使用这种bzip2技术,你不需要做任何不同的事情。 hadoop应该根据你的最小分割大小自动拾取它。

bzip2按块压缩数据,因此可以在块中解压缩并将每个块发送到单独的映射器。但是,gzip没有这样的技术,因此无法将其发送给不同的映射器。

答案 1 :(得分:2)

您可以查看pbzip2以获取并行bz2压缩和解压缩的示例。

还有一个并行的gzip,pigz。它进行并行压缩,但不进行并行解压缩。 deflate格式不适合并行解压缩。但是,您可以a)准备一个特殊的gzip流并重置历史记录,或者b)您可以在第一次传递时在gzip文件中构建索引。无论哪种方式,您都可以并行读取不同的部分,或者进行更有效的随机访问。