Azure Databricks批量读取MongoDB时出现Py4JJavaError求助
问题解决:Spark 3.5+ 搭配 MongoDB Connector 出现 NoSuchMethodError
错误原因
你遇到的java.lang.NoSuchMethodError本质是Spark版本与MongoDB Spark Connector版本不兼容。MongoDB官方的Connector版本和Spark有严格的对应关系:
- Connector 10.4.x 仅支持 Spark 3.4.x
- 你的集群用的是 Spark 3.5.0+,版本不匹配导致Connector调用了Spark 3.5中已移除/变更的方法
ExpressionEncoder.resolveAndBind。
解决步骤
更换兼容的Connector版本
将Maven依赖替换为支持Spark 3.5的版本,目前适配的版本是org.mongodb.spark:mongo-spark-connector_2.12:10.5.0(或更高的10.x版本,需匹配官方版本对应规则)。重新部署依赖并重启集群
- 在Databricks集群的依赖配置中移除旧的Connector包,添加新的版本。
- 重启集群确保依赖生效。
验证读取代码
确认你的MongoDB读取配置参数正确,示例代码如下:spark.read.format("mongodb")\ .option("uri", "mongodb://<host>:<port>/<db>.<collection>")\ .option("spark.mongodb.input.database", "your_db")\ .option("spark.mongodb.input.collection", "your_collection")\ .schema(your_defined_schema)\ .load()同时检查Schema定义是否符合Spark DataFrame的语法规范,避免因Schema错误引发额外问题。
内容的提问来源于stack exchange,提问作者Muhammad Arslan Waqar
相关产品推荐
相关产品推荐

