无法在Azure Databricks Delta连接中列出Unity Catalog数据库与表求助
一、Azure Databricks里看不到Unity Catalog表的排查
检查当前会话的元存储上下文
先执行SHOW CURRENT CATALOG;和SHOW CURRENT SCHEMA;,确认当前是不是默认的hive_metastore。如果是,手动切换到你的Unity Catalog和对应schema:USE CATALOG <你的Unity Catalog名称>; USE SCHEMA <你的schema名称>;再跑
SHOW TABLES;就能看到目标表了。验证表的存在与权限
用完整限定名查询表,比如SELECT * FROM <catalog>.<schema>.<表名> LIMIT 1;,如果报错,去Unity Catalog控制台检查你是否拥有该表的SELECT权限,包括catalog、schema和表本身的权限配置。确认Databricks运行时版本
必须使用Runtime 10.3 LTS及以上版本,旧版本不支持Unity Catalog的元数据读取,直接升级运行时即可。
二、Azure Data Factory里找不到Unity Catalog表的解决
链接服务要指定正确的元存储类型
创建Azure Databricks链接服务时,在属性中明确使用Unity Catalog:- 进入链接服务编辑页,找到Catalog选项,选择你创建的Unity Catalog名称。
- 指定对应的Schema,这样复制数据活动的目标表选择列表里就能显示Unity Catalog下的表。
手动输入完整限定名
如果可视化界面找不到表,直接在复制数据活动的目标设置里手动填写表的完整限定名:<catalog>.<schema>.<表名>,ADF会识别到Unity Catalog中的表。检查ADF服务主体的权限
确保ADF使用的服务主体(或托管标识)在Unity Catalog中拥有该表的WRITE权限,同时对目标schema有USAGE权限。去Unity Catalog给该主体分配对应角色即可,比如schema_user或自定义角色。
三、通用排查点
检查表的存储位置权限
Unity Catalog的Delta表要么存于托管存储,要么是指定的外部存储路径。确认Databricks和ADF的身份都能访问该存储路径(比如ADLS的Blob存储权限)。刷新元数据缓存
在Databricks中执行REFRESH TABLE <catalog>.<schema>.<表名>;,强制刷新元数据缓存,避免因缓存导致表不显示。
内容的提问来源于stack exchange,提问作者JhansiKandanathi

