我正试图通过azure上的pig脚本运行一个xml文件。我遇到了一些问题,我想这可能是因为我的父节点有一个名称空间。
REGISTER 'piggybank-0.15.0.jar';
DEFINE XPathAll org.apache.pig.piggybank.evaluation.xml.XPathAll();
A = LOAD 'file.xml' using org.apache.pig.piggybank.storage.XMLLoader('Parent') as (x:chararray);
B = FOREACH A GENERATE XPathAll(x, 'Parent/Child', true, true);
DUMP B;
脚本运行时没有错误,但返回空结果:()。我是否必须因为名称空间的不同而调用xmloader?
1条答案
按热度按时间eit6fx6z1#
通常,你需要声明一个前缀,比如
ns
,引用默认命名空间uri,然后使用该前缀引用默认命名空间中的元素:我不使用pig,所以不知道它是否支持前缀声明。纯xpath方法将通过本地名称和命名空间uri的组合来匹配元素(为可读性而 Package ):
如果其他名称空间中没有其他同名元素,则可以通过剥离
namespace-uri
标准: