如何在Databricks中查询Delta表所有者?已尝试DESCRIBE TABLE EXTENDED
获取Delta表所有者详细信息的Databricks查询方法
问题说明
DESCRIBE TABLE EXTENDED显示的root一般是集群服务账号,并非实际的表所有者,要获取真实所有者信息可以用以下方法:
1. Unity Catalog环境下的查询
如果你的Delta表由Unity Catalog管理,直接查询系统元数据视图:
- 查询表的所有者字段:
SELECT table_catalog, table_schema, table_name, owner FROM system.information_schema.tables WHERE table_name = '你的表名' AND table_schema = '你的 schema 名'
- 或者通过权限表确认拥有者权限:
SELECT table_catalog, table_schema, table_name, grantee FROM system.information_schema.table_privileges WHERE table_name = '你的表名' AND table_schema = '你的 schema 名' AND privilege_type = 'OWN'
2. Hive Metastore环境下的查询
对于Hive Metastore管理的表:
- 使用
SHOW GRANT命令直接查看:
SHOW GRANT ON TABLE your_schema.your_table TO USER
- 或者查询Hive元数据表(需对应权限):
SELECT t.TBL_NAME AS table_name, u.USER_NAME AS owner FROM hive_metastore.DBS d JOIN hive_metastore.TBLS t ON d.DB_ID = t.DB_ID JOIN hive_metastore.TABLE_PARAMS tp ON t.TBL_ID = tp.TBL_ID JOIN hive_metastore.ROLES r ON tp.PARAM_VALUE = r.ROLE_ID JOIN hive_metastore.ROLE_MAP rm ON r.ROLE_ID = rm.ROLE_ID JOIN hive_metastore.USERS u ON rm.PRINCIPAL_ID = u.USER_ID WHERE tp.PARAM_KEY = 'owner' AND t.TBL_NAME = '你的表名' AND d.NAME = '你的 schema 名'
注意事项
- 确保你拥有查询对应元数据的权限
- 若表是通过集群服务账号创建的,可能实际所有者就是
root,但大部分场景下是业务用户或角色
内容的提问来源于stack exchange,提问作者Farzu
相关产品推荐
相关产品推荐

