1

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.]
4

1 に答える 1

4

この方法でマクロを使用することはできません。マクロは、個々の値ではなく、関係 (テーブル) を返します。 GENERATEあなたの関係で個々の価値を生み出すためのものです。マクロを使用した方法は、UDF を使用しようとしているように見えます。これが、任意の UDF の場合と同様に、Pig がデフォルトのクラスパスを調べて関数を見つける理由です。

于 2013-06-25T12:17:08.940 に答える