0

我有一个猪 UDF,它在本地模式下完美运行,但失败:当我在集群上尝试它时,无法使用参数“null”实例化“com.bla.myFunc”。

4

1 回答 1

0

我的错误是在任务日志中挖掘得不够努力。当您通过 jobTracker UI 进行挖掘时,您可以看到根本原因是:

Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

所以,除了通常的:

    pigServer.registerFunction("myFunc", new FuncSpec("com.bla.myFunc"));

我们应该补充:

    registerJar(pigServer, Maps.class);

对于 UDF 使用的任何 jar,依此类推。

另一种选择是使用 build-jar-with-dependencies,但是您必须将 pig.jar 放在类路径中,否则您将解决这个问题:嵌入式 hadoop-pig:使用的正确方法是什么UDF 的自动 addContainingJar?

于 2012-06-17T14:16:29.253 回答