Unity Catalog 托管表如何为 Lakehouse 带来互操作性、性能和统一治理
Databricks 宣布 Unity Catalog (UC) 托管 Delta 表的外部访问现已公开预览。外部引擎(如 Apache Spark、Flink、Starburst、DuckDB)可以创建、读取和写入 UC 托管表,同时通过 Unity Catalog 统一执行治理。托管表通过预测优化自动调整查询性能并降低存储成本,支持无数据重写地原地升级现有外部表。该功能基于开放 API,与开源 Unity Catalog (UC OSS) 兼容。
近日,Databricks 宣布 Unity Catalog (UC) 托管 Delta 表的外部访问功能进入公开预览阶段。这意味着,Apache Spark、Apache Flink、Starburst、DuckDB 等外部引擎现在可以直接创建、读取和写入 UC 托管表,同时所有操作都受到 Unity Catalog 统一治理层的管控。
UC 托管表结合了 Delta Lake 和 Apache Iceberg 的互操作性,并内置了自动优化功能——预测优化(Predictive Optimization)。该功能自动清理存储、收集查询统计信息,并基于查询模式的变化自动选择 Liquid 聚类列来演变表布局。据 Databricks 称,这可以带来高达 50% 的存储成本节省和 20 倍的查询加速,同时消除了数据团队手动调优表的需求。
此外,最近正式发布的目录提交(catalog commits)使 Unity Catalog 成为 UC 托管表的提交协调器。外部客户端不再直接向云存储提交,而是通过 Catalog 进行协调,从而使 Unity Catalog 成为表状态的唯一真实来源。这带来了安全的外部写入、多语句事务以及外部操作审计等关键好处。
外部访问基于开放的元数据、凭证分发和提交协调 API 构建。凭证分发根据 UC 权限发放短期、作用域受限的凭证,而 Unity Catalog Delta API 则为 Delta 引擎提供创建、读取和写入操作的版本化契约。这些 API 是开放的,并在 Unity Catalog OSS 项目中实现,因此任何引擎都可以集成创建、读取和写入支持。结果是一个不断增长的引擎生态系统,它们都在 Databricks UC 和 UC OSS 中操作相同的数据副本。
合作伙伴已经围绕这些 API 进行构建。例如,Starburst 集成了 Unity Catalog 和 Delta Lake 以支持创建、读取和写入 UC 托管 Delta 表。Starburst 首席执行官 Justin Borgman 表示:“Starburst 与 Databricks 对数据生态系统开放性和互操作性的愿景一致。通过与 Unity Catalog 托管表集成,我们使客户能够创建所有数据的单一真实来源,同时集中治理并灵活选择他们喜欢的工具。”
Databricks 还通过 Delta Kernel 扩展生态系统。Delta Kernel 提供了读取、写入和提交 Delta 表的库,而无需从头开始重新实现协议。通过与 UC OSS 中的 UC Delta API 配合,Delta Kernel 使引擎能够无缝集成 Databricks 管理的 Catalog 或自托管的 UC OSS 部署。例如,DuckDB 基于 Delta Kernel 构建了其 Delta 和 Unity Catalog OSS 扩展。自 DuckDB v1.5.1 起,它可以直接读取和写入 UC 托管 Delta 表。DuckDB 实验室首席执行官 Hannes Mühleisen 评论道:“DuckDB 用户重视能够从轻量级分析引擎直接处理开放的湖仓数据。Delta Lake 和 Unity Catalog 集成有助于将这种体验带到受治理的企业表,包括通过一个引擎写入的数据可由另一个引擎一致读取的工作流。”
统一治理对于多引擎管道至关重要。无论引擎或身份如何,访问控制都必须得到尊重。Unity Catalog 是所有引擎的单一治理层。平台团队通过 UC 权限控制哪些主体可以外部访问表以及他们可以做什么。跨引擎的基于属性的访问控制(ABAC)进一步扩展了这一点,允许 Unity Catalog 在外部引擎读取时过滤行或掩码列。
对于希望开始使用的团队,Databricks 建议在 Unity Catalog 元存储上启用外部数据访问,授予包含 UC 托管 Delta 表的模式 EXTERNAL USE SCHEMA 权限,然后使用 Delta 4.3 和 Unity Catalog 0.5.1 客户端连接引擎。现有外部表可以通过 ALTER TABLE SET MANAGED 原地升级,无需数据重写。
Databricks 的愿景是清晰的:客户应该能够为每个工作负载使用最佳引擎,同时在 Unity Catalog 中保留一份数据副本,享受最佳性价比和统一治理。