hadoop pig xpath返回空属性值

hgqdbh6s  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(289)

我使用的是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;

请帮我解决这个问题。

ukqbszuj

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

if(input.size() > 3){
  ignoreNamespace=input.get(3);
}

以上代码应在

if (ignoreNamespace) {
                xpathString = createNameSpaceIgnoreXpathString(xpathString);
 }

相关问题