【问题标题】:Processing Unstructured Big XML Files处理非结构化的大 XML 文件
【发布时间】:2013-02-28 16:06:10
【问题描述】:

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

  1. 使用 XSLT 将大型 XML 文件转换为包含所需元素文件的较小 XML
    变身
  2. 比起在 java 代码中使用 SAXON XML 解析器,我对这些新生成的文件进行了解析
  3. 与使用 JAXB 的概念相比,我将 XML 解组为 java 对象而不是 SQL SERVER。

但现在我有新的 XML 文件,它们非常大,将近 15000 行或更多行,而且非常非结构化。因此使用上述解决方案获取数据库中的数据将非常低效。我试图找出处理这些大文件的最佳解决方案。我做了一些研究,发现了这个名为“Altova XML spy”的工具,我可以使用它来降低我的非结构化 XML 文件的复杂性。我尝试使用这个工具处理单个大文件,但效果不佳。我还想将这些大文件转储到 hadoop 集群中,并使用 Hive/Pig 获取数据。

所以我的问题是任何人都可以提出任何新的解决方案或程序。任何可以让我将大型 XML 文件制作成不太复杂的文件的工具。

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

提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

    如果不更详细地了解问题,很难给出建议。您描述的过程本质上看起来非常低效 - 我看不出为什么需要 JAXP 步骤 - 但也许有一个很好的理由。抱歉,但这不是一个简单的编码问题 - 它需要一两天的咨询帮助。

    【讨论】:

    • 是的,我同意这一点,但我不能在这个论坛上发布所有内容,所以我认为有了这么多细节,有人可以发布或建议一些工作方向。无论如何,我正在考虑使用 HIVE。我计划将所有内容转储到 hadoop 集群中,并使用 HIVE/PIG 创建查询。如果有人对此有很大帮助的建议,或者有人可以向我指出一些相关资源。谢谢
    【解决方案2】:

    如果你还是打算用 Pig 来查询它,那么也用 Pig 来加载它怎么样?

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

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

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

    【讨论】:

    • 评论:您是如何管理非常非结构化 XML 文件的? XML 不是某种非常结构化的数据存储方式吗?
    • XML 文件用于以结构化格式存储数据,但我拥有的文件是非结构化的,这就是我试图找出某种方法从这些文件中获取数据的原因。至于 hadoop 的使用,尽管根据你们的说法,单个文件的大小并没有那么大,但此类文件的总数将达到数百万,并且会随着时间的推移而增加。因此,请记住这部分,我正在尝试找出解决方案。
    • 那么“非结构化”是什么意思?这些文件确实遵循 XML 结构,不是吗?我的意思是您的数据包含在<tagA>this is my data for tagA</tagA> 中的标签范围内。如果是这样,那么它们是结构化的,否则您可能无法将文件称为“XML 文件”。此外,如果您有数百万个文件,那么选择集群,我会推荐 Hadoop,但还有更多技术。 Pig 与 Hadoop 文件系统 (HDFS) 的连接当然非常好。
    • 我所说的非结构化是指很少有 XML 文件具有特定的层次结构,很少有平面结构的所有元素都直接存在于根目录下,不同的文件可能有不同的元素,数据中的不同模式等等。希望这可以帮助。我也知道我可以采用 Hadoop 方法,但谁能告诉我几个开始步骤或解决方案应该如何进行。比如我应该使用什么配置硬件来制作集群等等。提前致谢
    • 用 VMware 试试 Cloudera CDH4 的测试版(它可以在任何系统上运行),看看它是否适合您,如果适合,请聘请数据库工程师。有关数据库管理的更多技术问题,请参阅专业问答dba.stackexchange.com
    【解决方案3】:

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

    对不起,我真的帮不上忙。我不明白为什么处理这种大小的数据会有问题。

    【讨论】:

    • 实际上是 15000 或更多。抱歉打错了
    • @user1188611 如果是这样,请使用“编辑”更新您的问题。
    • 已完成编辑,但有人可以提供一些想法或建议。
    猜你喜欢
    • 1970-01-01
    • 2018-10-13
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    相关资源
    最近更新 更多