用于stackoverflow转储文件的XPath

时间:2017-04-13 15:55:30

标签: xpath apache-pig

使用以下格式的文件:

<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 xmlloader将此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; 

输出我得() - 没有值。

我希望文件输出为文本,即1,1,Teacher,2009-09-30T15:17:50.66。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我不熟悉pig xmlloader,但/row@Id有两个问题:

  • 它无效XPath
  • 如果是,那将是一条绝对的道路

尝试:

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

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

答案 1 :(得分:0)

使用XPathAll提取属性.XS在属性方面有issue

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);