stackoverflow转储文件的xpath

wfypjpf4  于 2021-06-24  发布在  Pig
关注(0)|答案(2)|浏览(287)

我正在使用以下格式的文件:

<badges>
  <row Id="1" UserId="1" Name="Teacher"   Date="2009-09-30T15:17:50.66"/>
  <row Id="2" UserId="3" Name="Teacher"  Date="2009-09-30T15:17:50.69"/>                
</badges>

我使用pig-xmloader将这些xml数据提取到hdfs中。

A =  LOAD '/badges' using org.apache.pig.piggybank.storage.XMLLoader('row') as (x:chararray);
B = foreach A generate xpath(x, '/row@Id'). 
Dump B;

输出i get()-没有值。
我希望文件输出为文本,即1,1,教师,2009-09-30t15:17:50.66。我该怎么做?

f1tvaqid

f1tvaqid1#

我对Pig不熟悉,但是 /row@Id 有两个问题:
它不是有效的xpath
如果是的话,那就是一条绝对的道路
尝试:

B = foreach A generate xpath(x, 'row/@Id').

它使用有效的语法和相对路径。

9lowa7mx

9lowa7mx2#

使用xpathall提取属性。xpath在属性方面有问题。

REGISTER '/path/piggybank-0.15.0.jar'; -- Use the jar name you downloaded
DEFINE XPathAll org.apache.pig.piggybank.evaluation.xml.XPathAll();

B = foreach A generate XPathAll(x, 'row/@Id', true, false).$0 as (id:chararray);

相关问题