猪脚本使用XPathAll和Python UDF

时间:2016-12-16 15:39:45

标签: python xml apache-pig udf

我正在尝试编写一个Pig脚本,它将XML文件作为输入,并在运行一些UDF后返回文件中某个子节点的所有值。这是我正在运行的脚本:

REGISTER 'piggybank-0.15.0.jar';
REGISTER 'function.py' USING streaming_python as myFunc;
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) as (y:tuple);
C = FOREACH B myFunc.func(y);
DUMP C;

尝试调用UDF后出现以下错误:

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 10, column 14>  Syntax error, unexpected symbol at or near 'myFunc'

注意:如果我描述B而不将其设置为元组,我得到结果B:{()}。我对myFunc说错了吗?我无法弄清楚如何将行从B传递到myFunc。

1 个答案:

答案 0 :(得分:0)

我认为您在def中缺少生成关键字。

您可以尝试更改以下代码:

foreach