Pig UDF 中的 Java 依赖项
Posted
技术标签:
【中文标题】Pig UDF 中的 Java 依赖项【英文标题】:Java dependencies in Pig UDF 【发布时间】:2015-06-27 18:54:36 【问题描述】:我写了一个使用Joda Time 的UDF。我将它作为依赖项包含在 pom.xml 中。当我运行我的猪脚本时,我得到了错误
ERROR 2998: Unhandled internal error. org.joda.time.LocalDate.parse(Ljava/lang/String;)Lorg/joda/time/LocalDate;
我对 java、maven 和 hadoop 还是很陌生。如何将 joda 捆绑到我在集群上运行的 jar 中(如 c/c++ 中的静态链接)?
这是 NOT how to include external jar file using PIG 的副本,因为我不能使用 -D 选项并且在 pig 脚本中注册 Joda Time 无效。
【问题讨论】:
how to include external jar file using PIG 的可能副本 没有我的 UDF 包含并运行。 您的代码抛出了 java.lang.NoClassDefFoundError 异常。找到丢失的 jar(joda-time),然后将其作为运行时依赖项包含在您的 pig 脚本中。 @elcodedocle 参数 -D 在我的 macine (0.13) 上不被接受。 一个明显的 ***itis 案例。 Down and closevoting,同时以傲慢的方式忽略问题的内容,指代另一个包含一些相似词的显然重复的任务。感谢 Fred 真正阅读了这个问题。 【参考方案1】:问题是 Pig 带有 Joda 1.6,其中 LocalDate 没有 parse() 方法。最简单和最安全的解决方法是在 maven 中使用 1.6 并使用 1.6 Joda Time 重写您的代码。
【讨论】:
你指的是哪个猪的版本?稍后我会试试的 非常感谢。我花了大约 20 个小时来完成这项工作。互联网上的所有提示都是错误的。 NO 需要传递额外的jar,NO 需要注册一个jar。只需使用正确的 api。您可以详细说明 UDF 如何使用 Pig 的 joda-time,这对我来说仍然是个谜。 (来自 c/c++)以上是关于Pig UDF 中的 Java 依赖项的主要内容,如果未能解决你的问题,请参考以下文章
运行 Apache Pig 脚本时如何查找 jar 依赖项?
PIG 中 UDF 中的 java.lang.NullPointerException
如何在 build.gradle 中指定“pig-0.13.0-h2.jar”依赖?