升级DBR 9.1 LTS后Databricks Connect找不到cosmos.oltp数据源如何解决
问题根因
这个报错是远端Databricks集群的JVM进程找不到cosmos.oltp数据源对应的类,你将jar包放在本地虚拟环境的pyspark/jars目录下没有作用:Databricks Connect的运行逻辑是本地仅作为客户端提交代码、接收返回结果,所有计算逻辑都在远端集群的JVM中执行,不会加载本地环境的jar包。集群端没有预装对应连接器包的情况下,就会抛出类找不到的异常。
解决方案
你可以任选以下一种方式修复:
- 方案1:集群预装连接器(推荐)
登录Azure Databricks控制台,进入对应集群的「库」管理页面,添加Maven坐标com.azure.cosmos.spark:azure-cosmos-spark_3-1_2-12:4.3.0,保存后重启集群即可。该方式配置一次后,集群上运行的所有任务(包括笔记本、Databricks Connect提交的任务)都可以直接使用连接器,无需额外配置。 - 方案2:代码中显式指定依赖包
修改本地代码中SparkSession初始化的逻辑,新增配置指定要加载的依赖包,提交任务时集群会自动拉取对应包加载:
注意该方式需要集群能够访问公网拉取Maven依赖。spark = SparkSession.builder.appName("local") \ .config("spark.jars.packages", "com.azure.cosmos.spark:azure-cosmos-spark_3-1_2-12:4.3.0") \ .getOrCreate() - 方案3:离线环境指定jar路径
如果集群无法访问公网,先将对应cosmos连接器的jar包上传到DBFS的指定路径,再在SparkSession初始化时指定jar路径:spark = SparkSession.builder.appName("local") \ .config("spark.jars", "dbfs:/path/to/your/azure-cosmos-spark_3-1_2-12-4.3.0.jar") \ .getOrCreate()
额外校验
请确认你本地安装的Databricks Connect版本和集群的DBR 9.1 LTS版本完全匹配,版本不兼容也可能导致类加载异常。
内容的提问来源于stack exchange,提问作者Louis
相关产品推荐
相关产品推荐

