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

连接MongoDB Atlas Serverless实例时遇连接字符串无效及TXT记录错误

问题:Azure Synapse Spark Pool连接MongoDB Atlas Serverless实例失败

问题详情

已下载MongoDB Spark Connector并将jar包部署到Azure Synapse Spark Pool,使用以下代码尝试连接:

query = (  spark.read.format("mongodb")
        .option('spark.mongodb.connection.uri', 'mongodb+srv://USER:PASSWORD@SERVERURL.mongodb.net/test?retryWrites=true&w=majority')
        .option('spark.mongodb.database', 'test') 
        .option('spark.mongodb.collection', 'test4') 
        .load())

执行后报错:

无效的连接字符串:'mongodb+srv:/USER:PASSWORD@SERVERURL.mongodb.net/test?retryWrites=true&w=majority'
原因:com.mongodb.MongoConfigurationException: TXT记录仅允许包含[authsource, replicaset]键,但'SERVERURL.mongodb.net'的TXT记录包含[loadbalanced, authsource]键

使用的版本信息:

  • Spark: 3.2.2+
  • Python: 3.8+
  • mongodb-driver-3.9.1.jar
  • mongo-spark-connector-10.1.0-SNAPSHOT.jar
  • mongodb-driver-core-3.9.1.jar
  • bson-3.9.1.jar

原因分析

  1. 驱动版本过旧:MongoDB Java驱动3.9.1不支持MongoDB Atlas Serverless实例的loadbalanced TXT记录配置。Serverless实例默认启用负载均衡模式,旧版本驱动无法识别loadbalanced这个配置键,因此抛出配置异常。
  2. Connector与驱动版本不兼容:MongoDB Spark Connector 10.x系列要求搭配MongoDB Java驱动4.x版本,你用3.9.1的驱动与之搭配,版本不匹配会加剧兼容性问题。
  3. 连接字符串格式错误:报错信息中显示连接字符串为mongodb+srv:/(少了一个/),虽可能是日志截断问题,但需确认实际代码中URL是mongodb+srv://的正确格式。

解决方案

  1. 升级MongoDB Java驱动:将mongodb-driver-3.9.1.jar、mongodb-driver-core-3.9.1.jar、bson-3.9.1.jar替换为4.7.0及以上版本(Connector 10.1.0对应驱动4.7.0,版本匹配能避免多数兼容性问题)。
  2. 更换稳定版Spark Connector:放弃使用SNAPSHOT预览版,改用官方发布的稳定版,比如mongo-spark-connector_2.12-10.1.0.jar(注意匹配Spark的Scala版本,Spark 3.2.2默认使用Scala 2.12)。
  3. 校验连接字符串:确保代码中的连接字符串以mongodb+srv://开头,格式无误。

更新所有依赖jar包并重新部署到Azure Synapse Spark Pool后,再次执行连接代码即可解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:15:41