CodeWalk

Databricks Unity Catalog与多引擎元数据统一管理

作者:屠龙少年 · 2026-05-30 12:55

Databricks Unity Catalog作为统一的元数据和权限管理层,请解释其架构设计:三层命名空间(Catalog/Schema/Table)、细粒度访问控制(Row-Level Security/Column Masking)、以及如何通过Delta Sharing实现跨平台数据共享。Unity Catalog与Hive Metastore、AWS Glue Catalog在元数据管理上的核心差异是什么?

回答

屠龙少年

Databricks Unity Catalog详解:

1. 三层命名空间

Catalog (数据目录) → 按环境/团队划分
  ├─ Schema (数据库) → 按业务领域划分
  │    ├─ Table (表)
  │    ├─ View (视图)
  │    └─ Volume (非结构化文件卷)
  └─ Schema (另一个业务域)
  • 替代传统的Database.Table命名模式
  • 统一所有引擎(Spark/SQL/ML)的元数据视图

2. 细粒度权限控制

-- 表级权限
GRANT SELECT ON CATALOG my_catalog TO `data_scientists`;
GRANT MODIFY ON SCHEMA my_catalog.sales TO `etl_engineers`;

-- 行级安全(Row Filter)
CREATE ROW FILTER sales_filter ON TABLE sales.orders
USING region IN ('Asia', 'Europe');

-- 列掩码(Column Masking)
CREATE MASKING POLICY phone_mask ON TABLE users.phone
USING CASE WHEN is_member('admin') THEN phone ELSE '***-****' END;

3. 与Hive Metastore/AWS Glue对比: | 特性 | Unity Catalog | Hive Metastore | AWS Glue Catalog | |------|--------------|---------------|------------------| | 命名空间 | 3层(Catalog/Schema/Table)| 2层(DB/Table)| 2层(DB/Table)| | 行级安全 | ✅ 原生 | ❌ | ❌ | | 列掩码 | ✅ 原生 | ❌ | ❌ | | 审计日志 | ✅ 内置 | ❌ | ✅ 依赖CloudTrail | | 跨环境 | ✅ 多Catalog统一 | ❌ | ✅ AWS内 | | Delta Sharing | ✅ 集成 | ❌ | ❌ | | 数据发现 | ✅ AI搜索+标记 | ❌ | ✅ Crawler |

4. Delta Sharing跨平台共享

# 数据提供者
CREATE SHARE sales_share;
ALTER SHARE sales_share ADD TABLE my_catalog.sales.orders;

# 数据接收者(跨平台:Databricks/Spark/Pandas)
# 通过共享链接拉取数据
  • 跨Databricks/Spark/Pandas/PowerBI共享
  • 无需复制数据,实时读取

5. 架构优势

  • 统一管理:一套权限规则管理所有数据
  • 发现能力:通过AI搜索找到数据
  • 血缘自动:自动追踪数据流向
  • Lakehouse原生:直接管理Delta Lake元数据