Hadoop Pig Latin Tuples:如何将它们传递给UDF?

时间:2014-05-08 09:03:25

标签: hadoop apache-pig

我的目标是将输入中的每个字段传递给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(*)

等等。

主要问题是,正确的语法是什么?并且语法是否已从早期版本更改?

以下链接显示了单独的星号语法:

Chapter 10: Writing Evaluation & Filter Functions

1 个答案:

答案 0 :(得分:0)

这取决于您处理重新采购的方式。参数将是列(一个或多个)的名称,如FAKEUDF(column1,column2,....),或者您可以指定的所有列*也像FAKEUDF(*),或者您也可以指定relationName。在UDF中,您必须从元组中取出列值:tuple.get(index)。基于正在进行的处理,你必须小心你所发送的参数。它甚至可以是DataBag。