使用PySpark从Databricks集群连接MongoDB Atlas报错排查
问题原因与解决方案
核心问题
你手动初始化SparkSession的操作在Databricks环境下未生效,配置的MongoDB连接URI没有被Spark正确读取,因此抛出缺少数据库名的错误。
Databricks集群启动时会默认完成SparkSession的初始化,直接调用SparkSession.builder.getOrCreate()不会覆盖已有的SparkSession配置,你新增的MongoDB URI参数实际没有被加载。
修复方案
- 方案1:读取数据时直接传入连接参数(最稳妥,不会影响全局配置)
# 直接使用Databricks默认提供的spark对象,无需手动初始化 df = spark.read.format("mongo") \ .option("uri", "mongodb+srv://admin:<password>@mongocluster.fxilr.mongodb.net/TestDatabase.Events") \ .load() df.printSchema()
如果使用上述写法仍识别不到库名,可以拆分参数单独配置:
df = spark.read.format("mongo") \ .option("uri", "mongodb+srv://admin:<password>@mongocluster.fxilr.mongodb.net/") \ .option("database", "TestDatabase") \ .option("collection", "Events") \ .load()
- 方案2:给当前SparkSession全局配置MongoDB连接参数
# 直接修改默认spark对象的配置 spark.conf.set("spark.mongodb.input.uri", "mongodb+srv://admin:<password>@mongocluster.fxilr.mongodb.net/TestDatabase.Events") df = spark.read.format("mongo").load() df.printSchema()
注意事项
- 请将代码中
<password>替换为MongoDB Atlas对应账号的实际密码,不要保留尖括号 - 确保Databricks集群已安装与Spark版本适配的MongoDB Spark连接器
- 确保Databricks集群的出口IP已添加到MongoDB Atlas的IP访问白名单中
内容的提问来源于stack exchange,提问作者Arnab Mandal
相关产品推荐
相关产品推荐

