我使用的是ClouderaHadoop2.6和Pig0.15版本。
我正在尝试从xml文件中提取数据。下面您可以看到xml文件的一部分。
<product productID="MICROLITEMX1600LAMP">
<basicInfo>
<category lang="NL" id="OT1006">Output Accessoires</category>
</basicInfo>
</product>
我可以使用xpath()函数转储节点值,但不能转储属性值。您可以看到下面返回空元组而不是productid的代码。
DEFINE XPath org.apache.pig.piggybank.evaluation.xml.XPath();
allProducts = LOAD '/pathtofile/sample.xml' USING org.apache.pig.piggybank.storage.XMLLoader('product') AS (data:chararray);
productsOneByOne = FOREACH allProducts GENERATE XPath(data, 'product/@productID') AS productid:chararray
dump productsOneByOne;
请帮我解决这个问题。
1条答案
按热度按时间ukqbszuj1#
如何在pig中使用xpath提取xml属性?
xpath.java中存在错误,因为它忽略了第4个参数。
通过在xpath.java中添加以下代码,问题得到了解决。http://svn.apache.org/repos/asf/pig/branches/branch-0.15/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/xml/xpath.java
以上代码应在