我听说我们可以使用多个映射器在 Hadoop 中并行读取一个 bzip2 文件的不同部分,以提高性能。但我搜索后找不到相关样本。感谢是否有人能指出我相关的代码片段。谢谢。
顺便说一句:gzip 是否具有相同的功能(多个映射器并行处理一个 gzip 文件的不同部分)。
如果您查看: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 没有这种技术,因此不能将其发送到不同的映射器。