如何在Zeppelin中通过Spark Session连接MongoDB?遇认证错误求助
解决Zeppelin中Spark写入MongoDB的认证错误问题
排查与解决步骤
校验MongoDB连接URI格式
正确的带认证的URI格式应为:mongodb://<用户名>:<密码>@<主机地址>:<端口>/<认证数据库>?authSource=<认证数据库>
注意点:- 若用户名/密码包含特殊字符(如@、:、/),必须做URL编码(例如@编码为%40)
authSource参数不可省略,默认是admin,如果你的用户是在people数据库下创建的,需改为authSource=people
确认连接器版本兼容性
确保mongo-spark-connector版本与你的Spark、MongoDB版本匹配:- Spark 3.x对应连接器3.x系列
- Spark 2.x对应连接器2.x系列
可在Zeppelin的依赖管理面板中检查或添加对应版本的依赖包
拆分认证参数显式配置
如果URI方式仍有问题,尝试将认证参数拆分单独设置:people.write.format("mongodb") .mode("append") .option("uri", "mongodb://<主机地址>:<端口>") .option("database", "people") .option("collection", "contacts") .option("username", "你的用户名") .option("password", "你的密码") .option("authSource", "认证数据库名") .save()检查MongoDB用户权限
登录MongoDB Shell,确认目标用户拥有people数据库的readWrite权限:use people db.getUsers()查看返回结果中用户的
roles字段是否包含{ role: "readWrite", db: "people" }验证网络连通性
在Zeppelin所在服务器上,用telnet <主机地址> <端口>或nc -zv <主机地址> <端口>测试与MongoDB的网络连通性,排除防火墙或网络策略拦截问题
内容的提问来源于stack exchange,提问作者Another Day Another Data
相关产品推荐
相关产品推荐

