不同DBR版本执行特定Databricks SQL查询时遇异常,求排查原因
问题原因分析与解决方向
- 核心触发原因:你的长SELECT语句中使用了三层次命名空间格式(
catalog.schema.table),两个DBR版本对这种命名的处理逻辑差异导致了不同报错:- DBR 14.2 ML(Spark 3.5.0):Spark 3.3及以上版本原生适配Unity Catalog的三层次命名规则,当解析到
catalog.schema.table格式时,会默认判定为Unity Catalog路径,但你的集群未启用UC,因此触发[UC_NOT_ENABLED]错误。 - DBR 9.1 LTS ML(Spark 3.1.2):该版本Spark尚未引入Unity Catalog的命名空间支持,完全无法识别三层次命名格式,因此直接抛出
Catalog namespace is not supported的解析错误。
- DBR 14.2 ML(Spark 3.5.0):Spark 3.3及以上版本原生适配Unity Catalog的三层次命名规则,当解析到
- 仅该查询报错的原因:
其他查询使用的是传统双层次命名(schema.table)或单表名,这是两个版本都兼容的格式;而这个长查询的表引用中包含了三层次命名结构——大概率是编写/复制语句时误引入了catalog前缀(比如从启用UC的环境复制语句时遗留了前缀,或是误写了default.default.table这类冗余格式)。
验证与修复建议
检查长查询中的所有表引用,定位并移除多余的catalog前缀,将catalog.schema.table格式修改为schema.table,再在两个集群上重新执行即可解决问题。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

