我在 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仅从列而不是文件加载?
提前致谢。
最佳答案
使用方法如下:
select *,xpath_string(z,'//AChildElement1'),xpath_string(z,'//AChildElement2') from table;
有关更多与XMLpath相关的功能:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+XPathUDF
或者您也可以使用XMLserde方法。