无法在foreach块中调用pig宏

fykwrbwg  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(367)

例如,我无法从foreach中调用宏

DEFINE valid_attribute(id,attribute)
    RETURNS result {
            data       =       LOAD '/user/sathish/sessAttr' AS (id:chararray,browser_version:chararray);
         filtered_data      = FILTER data BY id == '$id' AND $attribute is NOT null;
         $result            = foreach filtered_data generate $attribute;
    };

    ip = load '/user/sathish/macros/inputParams' AS (id:chararray,attribute:chararray);
    op = foreach ip {generate valid_attribute('ip::id','ip:attribute');};
    dump op;

我在调用相同的时遇到以下异常:

2013-06-25 04:47:42,239 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve valid_attribute using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]
8gsdolmq

8gsdolmq1#

不能以这种方式使用宏。宏返回关系(表),而不是单个值。 GENERATE 是为了在你们的关系中产生个人价值。使用宏的方式看起来像是在尝试使用自定义项,这就是为什么pig会像查找任何自定义项一样,在其默认类路径中查找函数。

相关问题