将大型XML文件拆分为Hadoop的可管理部分
问题描述:
是否有一个输入类根据Hadoop中的树结构处理[多个]大型XML文件?我有一组具有相同模式的XML文件,但我需要将它们拆分为数据段,而不是将这些段分开。将大型XML文件拆分为Hadoop的可管理部分
例如XML文件将是:
<root>
<parent> data </parent>
<parent> more data</parent>
<parent> even more data</parent>
</root>
我将定义每个部分为: /根/父母。
我在问的是:Hadoop中是否有一个记录输入阅读器可以执行此操作?
答
我认为Cloud9 project at UMD可能会帮助你。
该库提供了一个可能有用的XMLInputFormat class。
另外感兴趣的是Cloud9文档中的这个页面,它查看如何处理XML dump of Wikipedia in MapReduce。
表现有多重要?记录输入读卡器可以,但速度很慢......这可以接受吗? – 2010-03-03 19:39:17
呃..它的一个学校作业如此表现并不是什么大问题......但是如果你打算把这些片段转储到多个文件中,那么它会更好一些 – monksy 2010-03-03 19:52:38
,然后vtd-xml(http://vtd-xml.sf .net)是最简单/最快捷的方法,VTDNav中有一个名为getElementFragment()的函数,它将段作为字节段抓取并将其转储到文件中,另一件事是:内置vtd-xml支持的xpath doesn 't伤害 – 2010-03-03 21:08:33