java.lang.NoSuchMethodError: com.mongodb.internal.connection.Cluster.selectServer

java.lang.NoSuchMethodError: com.mongodb.internal.connection.Cluster.selectServer

我是 Apache Spark 的新手,我正在使用 Scala 和 Mongodb 来学习它。 https://docs.mongodb.com/spark-connector/current/scala-api/ 我正在尝试从我的 MongoDB 数据库读取 RDD,我的笔记本脚本如下:

import com.mongodb.spark.config._
import com.mongodb.spark._

val readConfig = ReadConfig(Map("uri" -> "mongodb+srv://root:root@mongodbcluster.td5gp.mongodb.net/test_database.test_collection?retryWrites=true&w=majority"))

val testRDD = MongoSpark.load(sc, readConfig)
print(testRDD.collect)

在 print(testRDD.collect) 行,我得到了这个错误:

java.lang.NoSuchMethodError: com.mongodb.internal.connection.Cluster.selectServer(Lcom/mongodb/selector/ServerSelector;)Lcom/mongodb/internal/connection/Server;

还有 10 多行“在...”

使用的库:

org.mongodb.spark:mongo-spark-connector_2.12:3.0.1
org.mongodb.scala:mongo-scala-driver_2.12:4.2.3

这是 Mongodb 内部库的问题还是我该如何解决?

非常感谢

我怀疑mongo-spark-connectormongo-scala-driver之间存在冲突。前者使用Mongo驱动4.0.5,后者基于4.2.3版本。我建议只尝试 mongo-spark-connector

我也面临同样的问题,使用 mongo-spark-connector-2.12:3.0.1 jar 解决了它,并且还添加了 Scalaj HTTP » 2.4.2 的 jar。现在一切正常。