我正在使用Hadoop Map Reduce对Wikipedia数据转储(以bz2格式压缩)进行研究。由于这些转储很大(5 T),因此我无法将xml数据解压缩到HDFS中,而只能使用hadoop提供的StreamXmlRecordReader。 Hadoop确实支持解压缩bz2文件,但是它可以任意拆分页面并将其发送到映射器。因为这是xml,所以我们需要将splits作为标签。无论如何,hadoop提供的内置bz2解压缩和流xml记录阅读器可以一起使用吗?
最佳答案
Wikimedia Foundation刚刚发布了适用于Hadoop Streaming接口(interface)的InputReader,它能够读取bz2压缩的完整转储文件并将其发送给您的映射器。发送到映射器的单元不是整个页面,而是两个修订版(因此您实际上可以在两个修订版上运行差异)。这是最初的发行版,我确定会出现一些错误,但是请尝试一下,并帮助我们对其进行测试。
此InputReader需要Hadoop 0.21,因为Hadoop 0.21具有对bz2文件的流支持。源代码位于:https://github.com/whym/wikihadoop