Hadoop pig XPath返回空属性值

时间:2016-03-09 09:11:22

标签: xml hadoop xpath apache-pig hadoop2

我正在使用cloudera Hadoop 2.6,pig 0.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 个答案:

答案 0 :(得分:0)

How to extract xml attributes using Xpath in Pig?

添加更多内容

XP在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

if(input.size() > 3){
  ignoreNamespace=input.get(3);
}
上面的代码应该在

之前添加
if (ignoreNamespace) {
                xpathString = createNameSpaceIgnoreXpathString(xpathString);
 }