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

Spark写入MongoDB报错:com.mongodb.ConnectionString类未找到问题求助

故障原因
  • 核心问题为版本不兼容:你使用的mongo-spark-connector 2.11-2.3.0依赖MongoDB Java Driver 3.6.0及以上版本,而你当前引入的MongoDB Java Driver 2.7版本过老,不存在com.mongodb.ConnectionString类,触发类加载失败异常。
  • 额外问题:MongoDB Java Driver 2.x系列的API设计和3.x系列完全不兼容,既无法适配新版Mongo Spark Connector的调用逻辑,也无法兼容你使用的MongoDB 4.0.16版本。
解决方案
  1. 替换MongoDB Java Driver版本
    将现有2.7版本的MongoDB Java Driver替换为3.6.0~3.12.x之间的兼容版本,3.12.x是长期支持版本,同时兼容MongoDB 4.0+和Spark Connector 2.3.0。以Maven依赖为例:
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.12.14</version>
</dependency>

如果是Gradle配置:

implementation 'org.mongodb:mongo-java-driver:3.12.14'
  1. 排除旧版本依赖冲突
    检查项目依赖树,排除其他依赖间接引入的旧版MongoDB Java Driver。以Maven为例,在引入冲突依赖时添加exclusions配置:
<dependency>
    <groupId>冲突依赖的groupId</groupId>
    <artifactId>冲突依赖的artifactId</artifactId>
    <version>冲突依赖版本</version>
    <exclusions>
        <exclusion>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  1. 验证依赖生效
    在IntelliJ的Maven/Gradle面板查看依赖树,确认全局只有3.x版本的MongoDB Java Driver,无2.7版本残留后重新打包运行即可。

  2. 可选连接配置补充
    如果替换驱动后仍有连接异常,可在SparkSession初始化时显式声明Mongo连接配置:

SparkSession spark = SparkSession.builder()
        .appName("MongoWriteTest")
        .config("spark.mongodb.input.uri", "mongodb://<你的连接地址>/<数据库名>.periodos")
        .config("spark.mongodb.output.uri", "mongodb://<你的连接地址>/<数据库名>.periodos")
        .getOrCreate();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:04