2011-12-26 38 views
0

当你使用pigServer.registerFunction时,你不应该明确地调用pigServer.registerJar,而是让猪使用jarManager.findContainingJar自动检测jar。嵌入式hadoop-pig:UDF使用自动addContainingJar的正确方法是什么?

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

这里有什么正确的方法吗?我们必须手动为每个罐子调用registerJar ?取决于

回答

0

不知道什么是认证方式,但这里的一些指针:

  • 当您使用pigServer.registerFunction猪会自动检测包含的UDF,它还会自动发送信息给JobTracker
  • 猪罐子检测到包含PigMa的jar pReduce类(JarManager.createJar),并从中提取org/apache/pigorg/antlr/runtime等开始并将它们发送信息给JobTracker以及
  • 所以,如果你的UDF在同一个罐子坐作为PigMapReduce傻冒类拧,因为它不会被发送
  • 我们的结论:不使用的jar-具有依赖性

HTH

相关问题