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

启用MongoDB认证时sqlContext.read.option(...).mongo()执行失败求解决

解决Spark连接需认证的MongoDB失败问题

别担心,这个问题很常见,就是因为你没在Spark的MongoDB配置里加入认证信息导致的。下面给你两种简单可行的解决方案,选一种适合你的就行:

方案1:在连接URI中直接嵌入认证信息

最直接的方式就是把MongoDB的用户名、密码以及认证源(如果需要的话)直接写在URI里。比如你的MongoDB用户是admin,密码是123456,并且是在admin数据库下认证的,那修改后的代码如下:

val sparkSession: SparkSession = SparkSession.builder()
 .master("local")
 .appName("MongoSparkConnectorIntro")
 // 输入URI加入认证信息,authSource指定认证用的数据库(通常是admin)
 .config("spark.mongodb.input.uri", "mongodb://admin:123456@127.0.0.1/nasa.eva2?authSource=admin")
 // 输出URI同样需要添加认证信息
 .config("spark.mongodb.output.uri", "mongodb://admin:123456@127.0.0.1/nasa.astronautTotals?authSource=admin")
 .getOrCreate()
val sqlContext: SQLContext = sparkSession.sqlContext
val evadf: DataFrame = sqlContext.read.option("collection", "eva2").mongo()
evadf.printSchema()

注意:把admin和123456替换成你实际的MongoDB用户名和密码;如果你的用户是直接在nasa数据库下创建的,那可以去掉?authSource=admin这个参数。

方案2:单独配置认证参数

如果你不想把密码明文写在URI里(更安全一点),可以通过单独的配置项来设置认证信息:

val sparkSession: SparkSession = SparkSession.builder()
 .master("local")
 .appName("MongoSparkConnectorIntro")
 .config("spark.mongodb.input.uri", "mongodb://127.0.0.1/nasa.eva2")
 .config("spark.mongodb.output.uri", "mongodb://127.0.0.1/nasa.astronautTotals")
 // 配置输入的认证信息
 .config("spark.mongodb.input.username", "admin")
 .config("spark.mongodb.input.password", "123456")
 .config("spark.mongodb.input.authSource", "admin")
 // 配置输出的认证信息
 .config("spark.mongodb.output.username", "admin")
 .config("spark.mongodb.output.password", "123456")
 .config("spark.mongodb.output.authSource", "admin")
 .getOrCreate()
val sqlContext: SQLContext = sparkSession.sqlContext
val evadf: DataFrame = sqlContext.read.option("collection", "eva2").mongo()
evadf.printSchema()

额外注意事项

  • 确保你的MongoDB用户拥有nasa数据库的读权限(针对输入集合eva2)和写权限(针对输出集合astronautTotals),不然就算认证过了也会报错。
  • 如果你的MongoDB开启了SSL,还需要额外添加ssl=true到URI里,或者配置spark.mongodb.input.ssl=true这类参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:10:33