Hadoop-使用XPath在XML节点上进行PIG循环

阿杰

我有一个XML文件

<Superfoo>
<foo>
    <Number>1</Number>  
    <childfoo>20</childfoo>
</foo>
<foo>
    <Number>2</Number>  
    <childfoo>10</childfoo>
</foo>
<foo>
    <Number>3</Number>  
    <childfoo>29</childfoo>
</foo>
</Superfoo>

我的要求是在节点上循环。我不想对其进行硬编码,因为它可能从一个XML到另一个XML有所不同。有什么方法可以使用实现它PIG XPath

A =  LOAD 'foo.xml' using org.apache.pig.piggybank.storage.XMLLoader('Superfoo') as (x:chararray);

B = FOREACH A GENERATE XPath(x, 'Superfoo/foo/Number'), XPath(x, 'Superfoo/foo/childfoo');
dump B;

我尝试了上面的代码,但是它只返回1行,但是对于Foreach,它应该返回节点的所有行。

我们是否可以通过Hive使用循环来做到这一点?对我来说似乎很难。

有指针吗???

谢谢。

温卡尔

如下修改您的代码。

A =  LOAD 'foo.xml' using org.apache.pig.piggybank.storage.XMLLoader('foo') as (x:chararray);

B = FOREACH A GENERATE XPath(x, 'foo/Number'), XPath(x, 'foo/childfoo');

dump B;

Dump B 将产生如下输出:

(1,20)

(2,10)

(3,29)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章