嵌入式hadoop-pig:为UDF使用自动addContainingJar的正确方法是什么?

时间:2011-12-26 13:31:06

标签: hadoop apache-pig

当你使用pigServer.registerFunction时,你不应该显式调用pigServer.registerJar,而是让pig使用jarManager.findContainingJar自动检测jar。

但是,我们有一个复杂的UDF,它的类依赖于来自多个jar的其他类。所以我们用maven-assembly创建了一个带有依赖关系的jar。但是这会导致整个jar输入pigContext.skipJars(因为它包含pig.jar本身)并且没有被发送到hadoop服务器:(

这里的正确方法是什么?我们必须为我们依赖的每个jar手动调用registerJar吗?

1 个答案:

答案 0 :(得分:0)

不确定什么是认证方式,但这里有一些指示:

  • 使用pigServer.registerFunction时,pig会自动检测包含udfs的jar并将其发送到jobTracker
  • pig还会自动检测包含PigMapReduce类(JarManager.createJar)的jar,并从中仅提取org/apache/pigorg/antlr/runtime开头的类,等等,并将它们发送到jobTracker
  • 所以,如果你的UDF与你PigMapReduce的同一个罐子里面都被搞砸了,因为它不会被发送
  • 我们的结论:不要使用jar-with-dependencies

HTH