我有一个猪UDF,它在本地模式下运行完美,但失败了:当我在集群上尝试时,无法使用参数'null'实例化'com.bla.myFunc'。
答案 0 :(得分: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放在classpath之前,否则你将解决这个问题:embedded hadoop-pig: what's the correct way to use the automatic addContainingJar for UDFs?