【问题标题】:Apache Pig: Guice creation errors. java.lang.NoSuchMethodErrorApache Pig:Guice 创建错误。 java.lang.NoSuchMethodError
【发布时间】:2016-04-07 18:14:12
【问题描述】:

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

  1. 注册我的.jar
  2. 将其添加到前面“PIG_CLASSPATH”、“HADOOP_CLASSPATH”、“CLASSPATH”。
  3. 已尝试:导出 HADOOP_USER_CLASSPATH_FIRST=true
  4. -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;

【问题讨论】:

    标签: hadoop mapreduce apache-pig cloudera cloudera-cdh


    【解决方案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 相当于什么?
    猜你喜欢
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2016-09-10
    • 2020-06-20
    • 2016-11-19
    • 1970-01-01
    相关资源
    最近更新 更多