我正在使用Hadoop Map Reduce对维基百科的数据转储(以bz2格式压缩)进行研究。由于这些转储文件太大(5T),所以我不能将xml数据解压到HDFS中,而只使用hadoop提供的StreamXmlRecordReader。Hadoop确实支持解压缩bz2文件,但它会任意拆分页面并将其发送到映射器。因为这是xml,所以我们需要拆分成一个标记。有没有什么办法可以一起使用内置的bz2解压和hadoop提供的stream xml记录阅读器?
发布于 2011-08-06 19:09:49
Wikimedia Foundation刚刚发布了一个用于Hadoop流接口的InputReader,它能够读取bz2压缩的完整转储文件并将其发送到您的映射器。发送到映射器的单元不是整个页面,而是两个修订版(因此您实际上可以对这两个修订版进行比较)。这是最初的版本,我相信会有一些错误,但请给它一个旋转,并帮助我们测试它。
此InputReader需要Hadoop0.21,因为Hadoop0.21具有对bz2文件的流式支持。源代码可以在https://github.com/whym/wikihadoop上找到。
发布于 2011-07-19 03:36:52
您的问题与所述的here相同。所以我的答案也是一样的,你应该在TextInputFormat上创建你自己的变体。在这里,您创建了一个新的RecordReader,它跳过行,直到它看到一个逻辑行的开始。
https://stackoverflow.com/questions/6726357
复制相似问题