You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark调用MongoDB Connector读取RDD报NoSuchMethodError如何解决

问题原因

这个java.lang.NoSuchMethodError是典型的依赖版本冲突导致的,并非MongoDB内部库本身的bug。
你使用的org.mongodb.spark:mongo-spark-connector_2.12:3.0.1内置依赖的Mongo Java/Scala驱动为4.0.x版本,而你额外引入的org.mongodb.scala:mongo-scala-driver_2.12:4.2.3属于更高版本,两个版本中com.mongodb.internal.connection.Cluster类的selectServer方法签名不匹配,运行时类加载器优先加载了高版本的类,调用时找不到旧版本对应的方法就抛出了该错误。

修复方案

  • 方案一:移除额外引入的org.mongodb.scala:mongo-scala-driver_2.12:4.2.3依赖。Mongo Spark Connector本身已经内置了适配版本的Mongo驱动相关依赖,如果你没有单独直接调用Mongo Scala驱动的需求,移除该依赖即可解决冲突。
  • 方案二:统一驱动版本。如果你确实需要单独使用Mongo Scala驱动,将其版本降级到和Spark Connector匹配的4.0.x系列(例如4.0.5),保证所有Mongo相关依赖的主版本号一致。
  • 集群环境额外排查:如果你提交作业到独立Spark集群运行,还要检查集群公共classpath下是否存在其他版本的Mongo驱动包,若存在需要统一版本,避免集群侧的依赖和作业依赖冲突。

修改完依赖后重启notebook环境重新运行代码即可正常读取MongoDB数据。

内容的提问来源于stack exchange,提问作者Eclipsor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:24:04