我有一个猪 UDF,它在本地模式下完美运行,但失败:当我在集群上尝试它时,无法使用参数“null”实例化“com.bla.myFunc”。
问问题
1519 次
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 回答