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

如何在Databricks中集成Azure Cosmos DB?连接报错求助

解决Databricks连接Azure Cosmos DB的ClassNotFound错误

问题根源

你遇到的class not found错误核心原因是混用了新旧版本的Cosmos DB Spark连接器:

  • 你安装的是新版Azure Cosmos DB Spark 3.x连接器(com.azure.cosmos.spark),但代码里调用的是旧版连接器的格式类com.microsoft.azure.cosmosdb.spark,两者完全不兼容。
  • 同时你的配置缺少关键身份验证参数,且部分配置键的命名不符合新版连接器规范。

解决方案步骤

1. 确认正确的依赖包

在DBR 11.3 LTS(Spark 3.3.0、Scala 2.12)环境中,需安装对应版本的Cosmos DB Spark连接器,正确的Maven坐标为:

com.azure.cosmos.spark:azure-cosmos-spark_3-3_2-12:4.18.0

注意:安装依赖后必须重启集群,确保依赖包完全加载生效。

2. 修正连接代码

使用新版连接器的格式类和标准配置键,同时补充身份验证参数。完整代码示例如下:

# 新版连接器的标准配置项
readCfg = {
    "spark.cosmos.accountEndpoint": "<你的Cosmos DB Endpoint>",
    "spark.cosmos.accountKey": "<你的Cosmos DB Account Key>",
    "spark.cosmos.database": "<目标数据库名称>",
    "spark.cosmos.container": "<目标集合名称>"
}

# 调用新版连接器的格式类读取数据
df = spark.read.format("com.azure.cosmos.spark").options(**readCfg).load()
df.show()

3. 关键注意事项

  • 配置键必须严格匹配:新版连接器统一使用spark.cosmos.前缀,旧版的Endpoint/Database/Collection键名已完全废弃。
  • 必须提供spark.cosmos.accountKey(或使用Azure AD令牌进行身份验证),无身份验证参数将无法建立连接。
  • 确保集群网络配置允许访问Cosmos DB:比如配置VNet对等连接,或在Cosmos DB防火墙规则中放行Databricks集群的IP范围。

额外排查点

  • 检查集群的「已安装库」列表,确认azure-cosmos-spark包已正确安装,且版本与Spark/Scala版本兼容。
  • 如果仍有错误,查看集群日志的详细报错信息,确认是否是依赖冲突或配置参数拼写错误导致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:15:09