当你使用pigServer.registerFunction时,你不应该显式调用pigServer.registerJar,而是让pig使用jarManager.findContainingJar自动检测jar。
但是,我们有一个复杂的UDF,它的类依赖于来自多个jar的其他类。所以我们用maven-assembly创建了一个带有依赖关系的jar。但是这会导致整个jar输入pigContext.skipJars(因为它包含pig.jar本身)并且没有被发送到hadoop服务器:(
这里的正确方法是什么?我们必须为我们依赖的每个jar手动调用registerJar吗?
答案 0 :(得分:0)
不确定什么是认证方式,但这里有一些指示:
pigServer.registerFunction
时,pig会自动检测包含udfs的jar并将其发送到jobTracker JarManager.createJar
)的jar,并从中仅提取以org/apache/pig
,org/antlr/runtime
开头的类,等等,并将它们发送到jobTracker PigMapReduce
的同一个罐子里面都被搞砸了,因为它不会被发送HTH