【发布时间】:2016-10-13 15:12:08
【问题描述】:
我正在尝试为 Hive 编写一个作用于 JSON 数组的 Scala UDF——扩展 org.apache.hadoop.hive.ql.exec.UDF 并依赖于 play-json 的 play.api.libs.json.parse。
尝试从 Hive 中调用它时,我看到 java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonToken.id()I。
我不确定原因是什么——与杰克逊版本有些不兼容,如果是这样,我该如何解决这个问题?
我绑定的唯一组件/版本是 Hive 1.2。
【问题讨论】:
-
你的 JSON 依赖正确吗?您的 UDF jar 是否包含正确版本的 JSON 依赖项?
-
UDF 与其依赖项一起打包(使用 sbt-assembly)(Hadoop/Hive 除外,我正在使用提供的那些)。作为一个独立的功能,它测试/工作正常。
-
UDF fat jar 中jackson core jar 的版本是多少?
-
我已经尝试了一些......我应该瞄准什么? play-json 版本主要决定了我在这方面的选择。
-
问题可能是您的集群正在使用导致问题的旧版本的杰克逊 jar,或者有两个不同的 jar 包含相同的类名 [JsonToken],请检查此stackoverflow.com/questions/32142340/…