Apache Pig:Guice创建错误.java.lang.NoSuchMethodError



我正在尝试编写一个使用UDF的Pig脚本。当我运行它时,我会遇到"Guice创建错误",如"java.lang.NoSuchMethodError"。很明显,我的hadoop环境使用的Guice版本与我使用的不同。我尝试了几种将我的Jar放在前面的方法,例如:

  1. 注册my.jar
  2. 将其添加到"PIG_CLASSSPATH"、"HADOOP_CLASSPATH"、"CLASSPATH"的前面
  3. 已尝试:导出HADOOP_USER_CLASSPATH_FIRST=true
  4. -Dmapreduce.job.user.classpath.first=true

这些都不起作用!Hadoop版本号:Hadoop2.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;

在REGISTER udf.jar 时提供绝对路径

使用额外的jar命令提供了jar。

pig-Dpig.addition.jars=/absolute/path/of/jar/my.jar[your_other_paramter]

您还可以在脚本顶部定义UDF的名称,这样您就不必每次都提供完整的UDF名称。

REGISTER /absolute/path/of/my.jar;
define MyUDF com.mypackage.udf.MyUdf(line)
A = LOAD '/tmp/mydir/' AS (line:chararray);
B = FOREACH A MyUDF(line);
dump B;

相关内容

最新更新