将大型XML文件拆分为Hadoop的可管理部分

问题描述:

是否有一个输入类根据Hadoop中的树结构处理[多个]大型XML文件?我有一组具有相同模式的XML文件,但我需要将它们拆分为数据段,而不是将这些段分开。将大型XML文件拆分为Hadoop的可管理部分

例如XML文件将是:

<root> 
    <parent> data </parent> 
    <parent> more data</parent> 
    <parent> even more data</parent> 
</root> 

我将定义每个部分为: /根/父母。

我在问的是:Hadoop中是否有一个记录输入阅读器可以执行此操作?

+0

表现有多重要?记录输入读卡器可以,但速度很慢......这可以接受吗? – 2010-03-03 19:39:17

+0

呃..它的一个学校作业如此表现并不是什么大问题......但是如果你打算把这些片段转储到多个文件中,那么它会更好一些 – monksy 2010-03-03 19:52:38

+0

,然后vtd-xml(http://vtd-xml.sf .net)是最简单/最快捷的方法,VTDNav中有一个名为getElementFragment()的函数,它将段作为字节段抓取并将其转储到文件中,另一件事是:内置vtd-xml支持的xpath doesn 't伤害 – 2010-03-03 21:08:33

我认为Cloud9 project at UMD可能会帮助你。

该库提供了一个可能有用的XMLInputFormat class

另外感兴趣的是Cloud9文档中的这个页面,它查看如何处理XML dump of Wikipedia in MapReduce