Hadoop my pig UDF在本地模式下运行,但失败为;反序列化错误:无法实例化";在我的集群上

Hadoop my pig UDF在本地模式下运行,但失败为;反序列化错误:无法实例化";在我的集群上,hadoop,apache-pig,Hadoop,Apache Pig,我有一个pig UDF,它在本地模式下运行得很好,但是失败了:在集群上尝试时,无法实例化参数为“null”的“com.bla.myFunc”。我的错误是在任务日志中挖掘得不够努力。 当您通过jobTracker UI在那里挖掘时,您可以看到根本原因是: Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps at java.net.URLClassLoader$1.run(URLClassLoader

我有一个pig UDF,它在本地模式下运行得很好,但是失败了:在集群上尝试时,无法实例化参数为“null”的“com.bla.myFunc”。

我的错误是在任务日志中挖掘得不够努力。 当您通过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,但是在类路径中必须将pig.jar放在您的前面,否则您将处理这个问题: