Apache Pig:Guice 创建错误。 java.lang.NoSuchMethodError
Posted
技术标签:
【中文标题】Apache Pig:Guice 创建错误。 java.lang.NoSuchMethodError【英文标题】:Apache Pig: Guice creation errors. java.lang.NoSuchMethodError 【发布时间】:2016-04-07 18:14:12 【问题描述】:我正在尝试编写一个使用我的 UDF 的 Pig 脚本。当我运行它时,我遇到了“Guice 创建错误”,例如“java.lang.NoSuchMethodError”。显然,我的 hadoop 环境使用的 Guice 版本与我使用的不同。我尝试了几种将我的罐子放在前面的方法,例如:
-
注册我的.jar
将其添加到前面“PIG_CLASSPATH”、“HADOOP_CLASSPATH”、“CLASSPATH”。
已尝试:导出 HADOOP_USER_CLASSPATH_FIRST=true
-Dmapreduce.job.user.classpath.first=true
这些都不起作用! 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】:在注册 udf.jar 时提供绝对路径
或
使用附加的 jar 命令提供了 jar。
猪-Dpig.additional.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;
【讨论】:
没有用。 Pig 中的 -libjars 相当于什么?以上是关于Apache Pig:Guice 创建错误。 java.lang.NoSuchMethodError的主要内容,如果未能解决你的问题,请参考以下文章
Pig 错误:无法找到或加载主类 org.apache.pig.Main
错误包 org.apache.pig.FilterFunc 不存在
Apache Pig - 错误 2118:对于输入字符串:“4f8:0:a111::add:9898”
Pig 0.13 错误 2998:未处理的内部错误。 org/apache/hadoop/mapreduce/task/JobContextImpl