【问题标题】:Pig Script Using XPathAll and Python UDF使用 XPathAll 和 Python UDF 的 Pig 脚本
【发布时间】:2017-05-02 10:48:11
【问题描述】:

我正在尝试编写一个 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。

【问题讨论】:

    标签: python xml apache-pig udf


    【解决方案1】:

    我认为您在 foreach 中缺少 generate 关键字。

    你可以尝试改变你的代码如下:

    C = FOREACH B GENERATE myFunc.func(y);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 2013-07-16
      相关资源
      最近更新 更多