Pig在HCat中从列中分解XML

时间:2017-02-13 18:34:31

标签: xml hadoop hive apache-pig

我在hive表中有数据如下所示:

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 个答案:

答案 0 :(得分:0)

使用方法如下: -

select *,xpath_string(z,'//AChildElement1'),xpath_string(z,'//AChildElement2') from table;

有关更多与XML路径相关的功能:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+XPathUDF

或者您也可以使用XMLserde方法。