PySpark连接MongoDB执行查询时出现NoSuchMethodError错误求助
问题排查与解决方案
错误根源
你遇到的java.lang.NoSuchMethodError本质是依赖版本不匹配,核心问题有两个:
- MongoDB Spark Connector的Scala版本与环境中的Scala版本不兼容
- 额外添加的低版本Scala库引发了依赖冲突
你的环境使用Scala 2.12.15,但启动命令里指定的Connector是_2.13版本(org.mongodb.spark:mongo-spark-connector_2.13:10.1.1);同时手动添加的scala-library-2.10.0-M3.jar版本远低于Spark和Scala环境要求,直接导致Spark核心类的方法找不到。
解决步骤
1. 替换匹配版本的MongoDB Spark Connector
将启动命令中的Connector改为对应Scala 2.12的版本,命令如下:
pyspark --packages org.mongodb.spark:mongo-spark-connector_2.12:10.1.1
注:MongoDB Spark Connector的版本命名规则是
_Scala版本号,必须与你的Scala环境版本严格对应。
2. 移除冲突的低版本依赖
删除启动项中的scala-library-2.10.0-M3.jar,Spark本身已经集成了匹配版本的Scala库,手动添加低版本库会引发严重的依赖冲突。
3. 移除不必要的Spark Catalyst依赖
spark-catalyst_2.12-3.3.2.jar是Spark自带的核心组件,不需要手动添加到启动项中,重复引入可能导致版本不一致问题,建议从启动参数中移除。
验证操作
修改启动命令后,重新连接MongoDB并执行数据查询:
df = spark.read.format("mongodb").option("connection.uri", "mongodb://127.0.0.1/test.testData").load() df.first() df.show()
此时应该能正常读取并显示数据。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

