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 发现任何分隔符,它会自动拆分您的数据,因此行可能只是每行的第一个元素。
安东尼.
我正在尝试使用 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 发现任何分隔符,它会自动拆分您的数据,因此行可能只是每行的第一个元素。
安东尼.