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

Azure Databricks连接MongoDB遇SSL证书路径错误求助

解决Azure Databricks连接MongoDB的SSL握手错误

错误核心分析

报错根源是javax.net.ssl.SSLHandshakeException: PKIX path building failed,说明Java运行环境的信任库中没有MongoDB服务器证书的有效验证路径。你虽添加了跳过证书验证的参数,但因格式错误或参数兼容性问题未生效,最终导致连接超时。


方案1:修正连接字符串的格式与参数

你的连接字符串存在中文引号、多余空格、参数冗余等问题,按以下标准调整:

  • 替换所有中文引号为英文单引号/双引号
  • 确保URL以mongodb://开头,用户名密码格式为<Username>:<Password>,主机地址无多余空格
  • 使用tlsInsecure=true替代分散的tlsAllowInvalidCertificates、tlsAllowInvalidHostnames等参数,该参数会同时禁用证书有效性验证和主机名检查,适配MongoDB 3.x+驱动

调整后的连接字符串示例:

connectionString = 'mongodb://<Username>:<Password>@sopt-bo-halo-01.northeurope.cloudapp.azure.com:27017,sopt-bo-halo-02.northeurope.cloudapp.azure.com:27017,sopt-bo-halo-03.northeurope.cloudapp.azure.com:27017/defaultdb?ssl=true&readPreference=primary&maxIdleTimeMS=60000&connectTimeoutMS=10000&authSource=DBNAME&authMechanism=SCRAM-SHA-1&tlsInsecure=true'

方案2:匹配Mongo Spark Connector与Databricks版本

你当前使用的org.mongodb.spark:mongo-spark-connector_2.12:3.0.1需要与Databricks的Spark版本严格兼容:

  • Databricks 9.0+(Spark 3.1.x)对应Connector 3.0.x系列
  • Databricks 10.x+(Spark 3.2.x)推荐使用org.mongodb.spark:mongo-spark-connector_2.12:3.2.2

修改SparkSession配置中的spark.jars.packages参数即可完成版本适配。

方案3:导入CA证书到信任库(生产环境首选)

如果生产环境不允许跳过证书验证,需将MongoDB的CA证书导入到Databricks的Java信任库:

  1. 将CA证书文件(如mongo-ca.crt)上传到DBFS路径,例如dbfs:/mnt/certs/mongo-ca.crt
  2. 使用keytool命令将CRT证书转换为JKS格式的信任库:
keytool -importcert -file mongo-ca.crt -keystore mongo-truststore.jks -alias mongo-ca
  1. 在SparkSession配置中添加信任库参数:
spark = SparkSession.builder\
    .appName("MongoSparkConnectorIntro")\
    .config('spark.mongodb.input.uri', connectionString)\
    .config('spark.mongodb.output.uri', connectionString)\
    .config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.12:3.2.2')\
    .config('spark.driver.extraJavaOptions', '-Djavax.net.ssl.trustStore=/dbfs/mnt/certs/mongo-truststore.jks -Djavax.net.ssl.trustStorePassword=your-truststore-password')\
    .config('spark.executor.extraJavaOptions', '-Djavax.net.ssl.trustStore=/dbfs/mnt/certs/mongo-truststore.jks -Djavax.net.ssl.trustStorePassword=your-truststore-password')\
    .getOrCreate()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:05:24