【发布时间】:2015-09-23 23:40:33
【问题描述】:
我正在尝试编写一个 Java UDF,其最终目标是扩展/覆盖 PigStorage 的加载方法以支持多行条目。
我的猪脚本如下:
REGISTER udf.jar;
register 'userdef.py' using jython as parser;
A = LOAD 'test_data' USING PigStorage() AS row:chararray;
C = FOREACH A GENERATE myTOKENIZE.test();
DUMP D;
udf.jar 看起来像:
udf/myTOKENIZE.class
myTOKENIZE.java 导入 org.apache.pig.* 并且扩展了 EvalFunc。测试方法只返回一个 Hello world 字符串。
我遇到的问题是,当我尝试调用 myTOKENIZE 类的方法 test() 时出现错误 1070:错误 1070:无法使用导入解析 myTOKENIZE.test:[, java.lang., org. apache.pig.builtin., org.apache.pig.impl.builtin.] 想法?
【问题讨论】:
-
正如您已经发现的那样,在这种情况下,您需要使用完整的包名 udf.myTOKENIZE.test() 调用 UDF。另一种方法是首先使用定义语句,例如
define myTOKENIZE udf.myTOKENIZE();然后您可以通过 myTOKENIZE.test() 简单地使用 UDF
标签: java hadoop apache-pig user-defined-functions