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

发布于 2024-12-22 22:03:31 字数 308 浏览 2 评论 0原文

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

然而,我们有一个复杂的 UDF,它的类依赖于多个 jar 中的其他类。因此,我们使用 Maven 程序集创建了一个带有依赖项的 jar。但这会导致整个jar进入pigContext.skipJars(因为它包含pig.jar本身)并且不会被发送到hadoop服务器:(

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

when you use pigServer.registerFunction, you're not supposed to explicitly call pigServer.registerJar, but rather have pig automatically detect the jar using jarManager.findContainingJar.

However, we have a complex UDF who's class is dependent on other classes from multiple jars. So we created a jar-with-dependencies with the maven-assembly. But this causes the entire jar to enter pigContext.skipJars (as it contains the pig.jar itself) and not being sent to the hadoop server :(

What's the correct approach here? Must we manually call registerJar for every jar we depend on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风柔一江水 2024-12-29 22:03:31

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

  • 当您使用pigServer.registerFunction时,pig会自动检测包含udfs的jar并将其发送到jobTracker
  • pig也会自动检测包含PigMapReduce类的jar (JarManager.createJar),并从中提取org/apache/pig 开头的类, org/antlr/runtime 等,并将它们发送到 jobTracker,因此
  • ,如果您的 UDF 与 PigMapReduce 位于同一个 jar 中,那么您就完蛋了,因为它赢了没有得到
  • 我们的结论:不要使用 jar-with-dependencies

HTH

not sure what's the certified way, but here's some pointers:

  • when you use pigServer.registerFunction pig automatically detects the jar that contain the udfs and sends it to the jobTracker
  • pig also automatically detects the jar that contains PigMapReduce class (JarManager.createJar), and extracts from it only the classes that start with org/apache/pig, org/antlr/runtime, etc. and sends them to the jobTracker as well
  • so, if your UDF sits in the same jar as PigMapReduce your'e screwed, because it won't get sent
  • our conclusion: don't use jar-with-dependencies

HTH

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文