Pig 从 HCat 中的列中分解 XML
Posted
技术标签:
【中文标题】Pig 从 HCat 中的列中分解 XML【英文标题】:Pig Explode XML from Column in HCat 【发布时间】:2017-02-13 18:34:30 【问题描述】:我的配置单元表中的数据如下所示:
col1 | col2
12345 <AnXMLElement><AChildElement1>2</AChildElement1><AChildElement2>4</AChildElement2></AnXMLElement>
我想把第二列分解成这样的元素:
col1 | col2 | AChildElement1 | AChildElement2
12345 <OriginalData> 2 4
并将其写入 CSV 文件。
我可以使用 Hive/Hcat 加载器将数据拉入并过滤到这两列,但我对如何使用 XPath 或 XMLoader 从已过滤的结果集中加载列感到困惑。有没有办法使用 XPath 或 XMLoader 仅从列加载而不是从文件加载?
提前致谢。
【问题讨论】:
【参考方案1】:如下使用:-
select *,xpath_string(z,'//AChildElement1'),xpath_string(z,'//AChildElement2') from table;
更多XMLpath相关功能:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+XPathUDF
或者你也可以使用 XMLserde 方法。
【讨论】:
太棒了 :) 请接受答案以供其他人参考。谢谢以上是关于Pig 从 HCat 中的列中分解 XML的主要内容,如果未能解决你的问题,请参考以下文章
过滤 PIG LATIN 脚本中的列在为空的单元格上插入来自其他列的数据