You need to enable JavaScript to run this app. Databricks加载数据湖CDM数据报NoClassDefFoundError错误如何处理?
优惠活动
大模型
产品
解决方案
定价
更多

Databricks加载数据湖CDM数据报NoClassDefFoundError错误如何处理?

报错根因

java.lang.NoClassDefFoundError: org/apache/spark/sql/sources/v2/ReadSupport 报错由两个核心问题导致:

  • 依赖版本不兼容:你安装的com.microsoft.azure:spark-cdm-connector:0.19.1仅适配Spark 2.4.x版本,其调用的DataSource V2 API是Spark 2.4的旧版本定义。而Databricks 7.6内置Spark 3.0.1,Spark 3.x对DataSource V2 API做了不兼容改造,移除了旧版ReadSupport类的对应路径。
  • 重复依赖冲突:你同时安装了同名功能的本地JAR包和Maven依赖,两类依赖的类加载顺序不同,极易引发类加载异常。

解决步骤

1. 清理现有冲突依赖

先删除集群中已安装的以下依赖:

  • 本地JAR包:spark_cdm_connector_0_19_1.jar、neo4j_connector_apache_spark_2_12_4_0_1_for_spark_3.jar
  • Maven依赖:com.microsoft.azure:spark-cdm-connector:0.19.1

2. 安装适配Spark 3.0的CDM连接器

直接在集群的Maven依赖库中添加适配Spark 3.x版本的CDM连接器坐标即可:
com.microsoft.azure:spark-cdm-connector:3.0
该版本原生兼容Spark 3.0.x与Scala 2.12,和你的Databricks 7.6集群版本完全匹配

3. 可选配置调整

如果替换依赖后仍然报错,可在集群配置的Spark参数栏添加以下兼容配置:

spark.sql.legacy.dataSourceV2.enabled true

该参数会开启Spark 3.x对旧版DataSource V2 API的兼容支持。

4. Neo4j依赖适配

你使用的neo4j-contrib:neo4j-connector-apache-spark_2.12:4.0.1_for_spark_3本身原生适配Spark 3.x,清理重复的本地JAR包后保留该Maven依赖即可,不会和新版CDM连接器产生冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 06:54:03