Zeppelin Spark Maxmind jackson.databind NoSuchMethodError

Posted

技术标签:

【中文标题】Zeppelin Spark Maxmind jackson.databind NoSuchMethodError【英文标题】: 【发布时间】:2016-06-16 01:40:46 【问题描述】:

我正在尝试使用 Zeppelin / Spark 使用 Maxmind GeoIP 库对 IP 地址执行地理定位。我遇到了一个 NoSuchMethodError ,从阅读论坛来看,这似乎是一个依赖问题,该方法不在杰克逊库的某些版本中。如何在 Zeppelin 中识别和解决此依赖问题?我通过 %dep 加载 geoip2 并从 zeppelin/lib/lib 中删除了旧版本的 jackson lib,但无济于事。谢谢!

%dep
z.addRepo("geoip2").url("http://mvnrepository.com/artifact/com.maxmind.geoip2/geoip2/2.7.0")
z.load("com.maxmind.geoip2:geoip2:2.7.0")

java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.node.ArrayNode.<init>(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;Ljava/util/List;)V

【问题讨论】:

您安装了哪个版本的jackson-databind?你需要 2.7+。 【参考方案1】:

我最近遇到了同样的问题,所以我知道这有多令人沮丧。 我可以看到你正在使用 maxmind geoIp 2.7。

我尝试使用 2.8、2.7 版本。 在最终版本中,有最新版本的 jackson 库。

尝试使用相同的 2.4 版本。它使用版本小于 2.7 的 jackson-jr-objects。 我花了三天时间才弄明白。它对我有用。

<!-- https://mvnrepository.com/artifact/com.maxmind.geoip2/geoip2 -->
<dependency>
    <groupId>com.maxmind.geoip2</groupId>
    <artifactId>geoip2</artifactId>
    <version>2.4.0</version>
</dependency>

希望它能解决您的问题。

【讨论】:

以上是关于Zeppelin Spark Maxmind jackson.databind NoSuchMethodError的主要内容,如果未能解决你的问题,请参考以下文章

Zeppelin+Spark+Kubernetes:让 Zeppelin Job 在现有的 Spark 集群上运行

在 spark 序列化中使用 maxmind geoip

如何在 Zeppelin 中切换 Spark 版本以使用 Spark 3.x

使用 Spark 配置 Apache Zeppelin

Spark Standalone + Zeppelin + Docker:如何设置 SPARK_HOME

Zeppelin调试Spark程序