Apache Pig 和用户定义的函数

Apache Pig and User Defined Functions

我正在尝试使用 Apache Pig 读取日志文件。阅读文件后,我想在 Python 中使用我自己的用户定义函数。我想做的是类似于下面的代码,但它导致错误 1066:Unable 为别名 B 打开迭代器,我无法通过 google.[= 找到解决方案11=]

register 'userdef.py' using jython as parser;
A = LOAD 'test_data' using PigStorage() as (row);
B = FOREACH A GENERATE parser.split(A.row);
DUMP B;

但是,如果我将 A.row 替换为空字符串 '',则函数调用已完成并且不会发生错误(但数据也不会传递或处理)。

以字符串格式将数据行传递给 UDF 的正确方法是什么?

您不需要指定 A.row,单独的行或 $0 应该可以。 $0 是第一列,$1 第二列。

请注意,如果 PigStorage 发现任何分隔符,它会自动拆分您的数据,因此行可能只是每行的第一个元素。

安东尼.