处理非结构化的大XML文件

时间:2013-02-28 16:06:10

标签: xml hadoop xml-parsing hive apache-pig

我为大小近500行的XML文件做了以下解决方案:

  1. 使用XSLT将大型XML文件转换为带有所需元素文件的较小XML tansformations
  2. 在java代码中使用SAXON XML解析器我解析了这些新生成的文件
  3. 比使用JAXB的概念我将XML格式化为java对象而不是SQL SERVER。
  4. 但现在我有了新的XML文件,这些文件非常大,接近15000行或更多,非常非结构化。因此,使用上述解决方案来获取数据库中的数据将是非常低效的。我试图找出与这些大文件一起使用的最佳解决方案。我做了一些研究,并且遇到了一个名为“Altova XML spy”的工具,我可以用它来使我的非结构化XML文件不那么复杂。我尝试使用这个工具使用一个大文件来运行它不能很好。我还想把这些大文件转储到hadoop集群中,并使用Hive / Pig来获取数据。

    所以我的问题是任何人都可以建议任何新的解决方案或程序。我可以使用任何工具将大型XML文件制作成一些不那么复杂的文件来使用。

    希望这么多信息就足够了。如果还有其他需要,请告诉我。

    提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果不详细了解问题就很难提出建议。你描述的过程看起来本质上效率很低 - 我不明白为什么需要JAXP步骤 - 但也许有充分的理由。抱歉,这不是一个简单的编码问题 - 需要一两天的咨询帮助。

答案 1 :(得分:1)

如果你计划用猪查询它,那么使用Pig加载它也会怎么样?

例如org.apache.pig.piggybank.storage.XMLLoader()是执行此操作的函数。

但是如果你认为你需要一个集群来玩15,000个项目,那你错了。任何个人计算机都可以管理15,000个项目。我同意Michael Kay的观点,这是一个非常少量的数据。

根据我对Hadoop集群的一点经验,如果使用计算机查询速度超过30-40秒,则集群没有用处,因为设置map-reduce作业大约需要30秒结构体。即使对于在个人计算机上花费几分钟的查询,群集的复杂性也不值得花费几秒钟。

答案 2 :(得分:0)

1500线对我来说听起来不是很大。事实上,我会称它为小。

对不起我真的不能帮忙。我不明白为什么处理这种大小的数据应该是一个问题。