我的目标是将输入中的每个字段传递给UDF,如下所示:
A = LOAD './input/file1' USING PigStorage(' ') AS (f1:chararray, f2:chararray);
B = FOREACH A GENERATE com.mycompany.udf.FAKEUDF(tuple(*));
注意:我使用的是Cloudera的0.12.0-cdh5.0.0版本。
以上FOREACH
只是我多次尝试之一。我见过像
...FAKEUDF(*)
等等。
主要问题是,正确的语法是什么?并且语法是否已从早期版本更改?
以下链接显示了单独的星号语法:
答案 0 :(得分:0)
这取决于您处理重新采购的方式。参数将是列(一个或多个)的名称,如FAKEUDF(column1,column2,....),或者您可以指定的所有列*也像FAKEUDF(*),或者您也可以指定relationName。在UDF中,您必须从元组中取出列值:tuple.get(index)。基于正在进行的处理,你必须小心你所发送的参数。它甚至可以是DataBag。