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

PySpark连接本地MongoDB创建Spark Session报ClassNotFoundException如何解决

PySpark 连接本地 MongoDB 标准实现方案

报错核心原因

两次类不存在报错均由两个共性问题导致:

  • 版本兼容匹配不符合要求:Spark 生态的第三方数据源连接器需要和 Spark 版本、内置 Scala 版本严格对应
  • 依赖拉取失败:spark.jars.packages 配置会默认从 Maven 中央仓库拉取依赖包,网络环境问题导致拉取失败时也会触发类找不到异常

当前测试环境(PySpark 3.1.2、MongoDB 5.0.2、Python 3.8.8)本身无兼容性问题,按照如下标准方案实现即可正常运行。

标准实现代码

from pyspark.sql import SparkSession

# 初始化 Spark Session
spark = SparkSession.builder \
    .master("local[*]") \
    .appName("MongoConnectTest") \
    .config("spark.mongodb.input.uri", "mongodb://127.0.0.1:27017/mydb.coll") \
    .config("spark.mongodb.output.uri", "mongodb://127.0.0.1:27017/mydb.coll") \
    # 适配 Spark 3.1.x + Scala 2.12 的 Mongo 连接器版本
    .config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.12:3.0.1") \
    .getOrCreate()

# 读取数据验证
df = spark.read.format("mongo").load()
# 打印表结构
df.printSchema()
# 打印前5行数据
df.show(5)

异常情况处理

如果运行后仍然报类找不到错误,说明依赖包自动拉取失败,可通过手动加载本地 Jar 包解决:

  • 手动下载两个依赖包:mongo-spark-connector_2.12-3.0.1.jar、mongo-java-driver-3.12.11.jar,存放至本地任意目录
  • 将上述代码中的 spark.jars.packages 配置替换为 spark.jars,值为两个 Jar 包的本地绝对路径,多个路径用英文逗号分隔:
    # Windows 路径示例
    .config("spark.jars", "C:/dependency/mongo-spark-connector_2.12-3.0.1.jar,C:/dependency/mongo-java-driver-3.12.11.jar")
    # macOS/Linux 路径示例
    .config("spark.jars", "/home/user/dependency/mongo-spark-connector_2.12-3.0.1.jar,/home/user/dependency/mongo-java-driver-3.12.11.jar")
    

常见踩坑原因说明

PySpark 连接 MongoDB 看起来操作简单但容易出错,核心原因是 Spark 本身基于 Scala 开发,第三方数据源连接器同时依赖 Scala 版本、Spark 版本、数据源版本三个维度的匹配,和普通 Python 包仅需适配 Python 版本的规则不同,任意一个版本不匹配都会触发运行时异常。另外国内网络环境下 Maven 中央仓库访问不稳定,也会导致自动拉取依赖经常失败,进一步提升了使用门槛。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:42:03