用猪拉丁语解析 XML
Posted
技术标签:
【中文标题】用猪拉丁语解析 XML【英文标题】:Xml parsing with pig Latin 【发布时间】:2013-11-04 21:06:43 【问题描述】:我对 Hadoop 和 Pig 都很陌生。我已经能够做一些简单的程序,但是当 XML 文件的一部分格式错误时处理 XML 让我很费力。
我可以使用 XMLLoader('tag') 从一个很棒的 xml 文件中获取所有标签。然而,如果一个人错过了一个结构良好的封闭标签,猪就会停在那个地方。例如
<tag>
</tag>
<tag>
</tag1>
<tag>
</tag>
这只会拾取第一个有效标签。现在,我有使用 JAQL 的经验并且能够忽略错误记录,以便应用程序选择第二个标签。
我的问题是:他们是一种使用 Pig 而不是 JAQL 来处理不良 XML 格式的方法吗?
【问题讨论】:
【参考方案1】:我一直在查看 pig XMLLoader 代码,格式错误的标签似乎正在发生的事情是加载器从未注意到标签结束,并且无法注意到它已进入新的主标签.似乎没有办法使用 XMLLoader,因为它目前可以解决这个问题。
但是,可以修改 XMLLoader 以使其以您希望的方式工作。可能是通过更改skipToTag 方法中的条件,以便如果它遇到指定开始标记的另一个实例,它会向前跳过,忽略格式错误的标记。请记住,如果您有同名的嵌套标签(例如地址作为根,但地址作为文档中较低的元素),这会搞砸,所以它不是万无一失的。
然而,在大多数情况下,预先验证 XML 似乎是一个更好的选择,或者让预处理器只将有效的 XML 提取到一个文件中,然后运行 pig。
希望这会有所帮助。
【讨论】:
以上是关于用猪拉丁语解析 XML的主要内容,如果未能解决你的问题,请参考以下文章