我想写一个Pig脚本,使用我的自定义项。当我运行它时,我会遇到“guice创建错误”,比如“java.lang.nosuchmethoderror”。显然,我的hadoop环境使用的guice版本与我使用的不同。我试过几种把jar放在前面的方法,比如:
注册my.jar
将其添加到“pig\u classpath”、“hadoop\u classpath”、“classpath”前面。
尝试:export hadoop\u user\u classpath\u first=true
-dmapreduce.job.user.classpath.first=真
这些都没用!hadoop版本:hadoop 2.6.0-cdh5.4.5
下面是我的简单脚本:
REGISTER my.jar;
A = LOAD '/tmp/mydir/' AS (line:chararray);
B = FOREACH A generate com.mypackage.udf.MyUdf(line);
dump B;
1条答案
按热度按时间but5z9lq1#
或者在注册udf.jar时提供绝对路径
或者
使用额外的jar命令提供jar。
pig-dpig.additional.jars=/absolute/path/of/jar/my.jar[您的其他参数]
您还可以在脚本顶部定义自定义项的名称,这样就不必每次都提供完整的自定义项名称。