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

PySpark使用mongodb-spark连接器报错:类未找到com.mongodb.spark.sql.DefaultSource

解决MongoDB Spark Connector类未找到异常的方案

踩过类似的坑,结合你给出的版本(MongoDB Connector 2.2.2、Spark 2.2.0、MongoDB 3.6),这个类未找到的问题大概率是Spark运行时没有正确加载MongoDB连接器的依赖包,下面是具体的解决步骤:

1. 用spark-submit指定依赖包(最推荐)

如果你是通过spark-submit运行Python脚本,一定要在命令里加上--packages参数来引入连接器依赖,命令格式如下:

spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.2 /home/cisco/spark-mongo-test.py

注意:_2.11对应Scala版本,Spark 2.2.0默认使用Scala 2.11,如果你Spark是基于Scala 2.10编译的,就改成_2.10。这个参数会自动下载匹配的依赖包并添加到Spark的classpath里。

如果是用pyspark交互式shell运行,启动时也要带上这个参数:

pyspark --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.2

2. 检查代码中的数据源配置(辅助验证)

虽然这不是类找不到的直接原因,但确保代码里的数据源格式和配置正确很重要,比如读取数据时需要指定MongoDB的连接信息:

df = spark.read.format("com.mongodb.spark.sql.DefaultSource") \
    .option("uri", "mongodb://localhost:27017/your_db.your_collection") \
    .load()

这里的uri要替换成你实际的MongoDB地址、数据库和集合名。

3. 手动添加jar包到Spark的lib目录(可选)

如果不想每次运行都加--packages参数,可以手动下载对应版本的mongo-spark-connector jar包(注意匹配Scala版本),放到Spark安装目录下的jars文件夹里,然后重启Spark服务。这样Spark每次启动时都会自动加载这个jar包,不用再手动指定依赖。

为什么会出现这个错误?

ClassNotFoundException本质是Spark的JVM进程在运行时找不到com.mongodb.spark.sql.DefaultSource这个类,而这个类是MongoDB Spark Connector提供的。之所以安装时正常但运行时出错,是因为安装的包没有被Spark的运行环境识别到,必须通过--packages或者手动添加jar包的方式把依赖加入Spark的classpath才行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:16:41