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

Spark 2.2.0连接MongoDB出现NoSuchMethodError问题求助

解决Spark(HDP定制版)连接MongoDB时的NoSuchMethodError问题

这个错误java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.analysis.TypeCoercion$.findTightestCommonTypeOfTwo()Lscala/Function2;本质是Spark版本兼容性问题——你使用的是HDP定制的Spark 2.2.0(版本号2.2.0.2.6.3.0-235),而Mongo Spark Connector是基于官方Apache Spark 2.2.0编译的,HDP对Spark的Catalyst模块做了定制修改,导致Connector调用的方法在你的Spark环境中不存在。

下面是具体的排查和解决步骤:

1. 针对HDP Spark版本重新编译Mongo Spark Connector

HDP的Spark在依赖版本、代码细节上和官方Spark有差异,直接用官方编译的Connector jar会出现方法不匹配的问题,你需要重新编译Connector适配HDP的Spark:

  • 保持之前的操作:克隆mongo-spark仓库,切换到2.2.0标签
  • 修改项目根目录的pom.xml,将Spark相关依赖的版本替换为你的HDP版本2.2.0.2.6.3.0-235,比如:
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.2.0.2.6.3.0-235</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.2.0.2.6.3.0-235</version>
        <scope>provided</scope>
    </dependency>
    
  • 执行编译命令:mvn clean package -DskipTests,确保编译过程中没有依赖错误
  • 将编译生成的mongo-spark-connector-assembly-2.2.0.jar替换之前的jar包,上传到Spark服务器的所有节点(包括Worker节点)

2. 确认Mongo Java Driver版本与Connector的兼容性

Mongo Spark Connector 2.2.0需要搭配特定版本的Mongo Java Driver,建议使用3.6.0版本(这个版本和Connector 2.2.0是官方适配的)。你可以检查当前使用的mongo-java-driver.jar版本,如果不是3.6.x,替换为对应版本,避免驱动和Connector之间的兼容性问题。

3. 确保jar包在集群中全局可用

在Zeppelin或PySpark的客户端部署模式下,要保证Connector和Driver的jar包能被所有Executor节点加载:

  • 最简单的方式是将这两个jar包放到Spark安装目录的jars文件夹下,重启Spark集群
  • 如果不想修改集群配置,可以在启动PySpark时通过--jars参数指定本地jar包路径(注意如果是集群环境,需要确保所有节点都能访问到这些jar包,比如放到共享存储上)

4. 修正MongoDB连接URI的格式问题

你的代码中URI里的&amp;是HTML实体转义,在Python字符串中不需要这样处理,应该直接写&,修改后的URI如下:

'mongodb://user:password@172.22.100.231:27017,172.22.100.234:27017/dmp?authMechanism=SCRAM-SHA-1&authSource=admin&replicaSet=rs0&connectTimeoutMS=300&readPreference=nearest'

按照以上步骤操作后,应该能解决这个方法找不到的错误,成功读取MongoDB数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:55:26