Your data, your storage, your rules: a 2026 guide to storing Unity Catalog managed tables
TL;DR · AI 摘要
Databricks的Unity Catalog管理表允许用户在自有云存储中控制数据位置,支持Iceberg和Delta格式,并通过开放API实现数据治理。
核心要点
- Unity Catalog管理表数据存储在用户拥有的S3/ADLS/GCS等云存储中
- 通过SET MANAGED LOCATION可动态变更表存储路径
- 支持Iceberg和Delta格式的自动化数据优化
结构提纲
按章节快速跳转。
- §核心机制
Unity Catalog管理表将数据存储在用户自有云存储账户中,支持路径动态配置。
- ·存储控制
通过SET MANAGED LOCATION命令可变更新表存储位置,外部表可迁移至指定路径。
- ›开放架构
支持Apache Spark/Flink等工具通过Open API访问数据,无需数据复制。
Databricks自动处理数据布局、调优和清理,适用于Iceberg和Delta格式。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Unity Catalog管理表
- 存储控制
- 自有云存储(S3/ADLS/GCS)
- 动态路径配置
- 开放架构
- Open API集成
- 跨工具访问
- 自动化管理
- 数据布局优化
- Delta/Iceberg支持
金句 / Highlights
值得收藏与分享的关键句。
Your managed table data lives in cloud storage you own, at a location you control
Databricks handles the data layout, tuning, and cleanup for you where you choose
Secure access is made possible through Open APIs and credential vending
您的数据,您的存储,您的规则:2026 年 Unity Catalog 管理表存储指南 | Databricks 博客
跳至主要内容
Unity Catalog
2026 年 9 月 29 日
您的数据,您的存储,您的规则:2026 年 Unity Catalog 管理表存储指南
您的管理表数据存储在您拥有的云存储中,位置由您控制
作者:Elizabeth Bowman 和 Isabel Dong
摘要
- Unity Catalog 管理表将您的数据存储在您拥有的云存储中,路径由 metastore、catalog 或 schema 上的托管存储位置设置。
- 随着组织变化,团队可能会陷入继承的存储位置中。SET MANAGED LOCATION 可更改新表的存储位置,将外部表转换为托管表可将其数据移动到您设置的位置。
- 无论选择单一存储位置还是为合规性和成本归因使用独立存储,您始终可以控制管理表数据的存储位置。
Unity Catalog 管理表允许您在需要独立存储时控制数据的存放位置。与其他数据平台不同,Databricks 表数据保留在您拥有的云存储账户中,例如您的 S3 存储桶、ADLS 容器或 GCS 存储桶。
Unity Catalog 管理表自动化表管理。无论您将 Unity Catalog 管理表存储在 Iceberg 还是 Delta 格式中,Databricks 都会在您选择的位置处理数据布局、调优和清理,并在表变更时自动应用优化。
本文解释了托管表存储模型的工作原理,以及如何选择或更改 Databricks 托管存储位置。
您的表保留在您拥有的存储中
当您使用自有云存储时,管理表数据会存储在您拥有的云账户中。您保留对该存储的所有权,并能查看数据的组织方式。您可以检查、审计并应用自己的存储桶策略,同时控制数据的位置。
与其他将表存储在供应商控制存储或专有数据格式中的平台不同,Databricks 的数据始终保留在您的账户中。
开放性设计
将数据保留在自己的云账户中只是 Databricks 托管表开放性的部分体现。Unity Catalog 是业界唯一一个让您成为数据所有者、提供 Iceberg 和 Delta 全流程治理读写访问,并能通过开放标准连接到其他人在开放格式中拥有的表的主要目录。
Apache Spark™、Flink、Trino、Kafka connect 和 Snowflake 等外部工具可通过 Iceberg Rest Catalog 和 Unity Catalog 的 Open APIs 读写托管表。通过 Open APIs 和凭证分发实现安全访问,使外部工具无需复制数据即可与受控数据交互。这简化了架构,并在分析和 AI 工作负载中实现了单一数据源。
当您使用自有存储时,文件保留在您的云账户中,而 Unity Catalog 负责管理对它们的访问权限。
您控制数据的存储位置
在 Databricks 中,通过托管表可以决定托管表数据的存储位置。您可以在元数据存储库、目录或模式级别一次性设置托管存储位置,所有子表都会继承该设置。优先级由具体级别决定:模式的存储位置优先于其所属目录,目录的存储位置又优先于元数据存储库。您可以设置一个广泛的默认值,同时在团队或领域需要独立存储时进行覆盖。
$
/$
这种控制方式并非在初始设置时固定不变。随着组织的变化,您可以使用 ALTER CATALOG 或 ALTER SCHEMA ... SET MANAGED LOCATION 将新表和卷指向新位置,而所有已写入的数据仍保留在原处。
在需要独立存储时获得更精细的控制
大多数团队通过目录和模式对数据进行逻辑组织,无需考虑底层文件的物理存储位置:目录和模式继承的托管存储位置已满足需求。结合 Unity Catalog 的角色和属性访问控制,这种方案可以满足标准的 GDPR 数据隔离要求。
然而,某些组织需要将边界延伸到物理存储本身。某个业务线可能需要独立的存储用于管理或云成本分配。或者,区域和监管规则可能规定某些数据必须物理存储在特定位置。在这些情况下,您可以为特定目录或模式设置独立的托管存储位置,使数据的物理存储位置与所需边界一致。
转换为托管表时选择数据存储位置
当您将外部表转换为托管表时,数据会存储到当前目录或模式解析出的托管存储位置。如果该外部表已经存储在临时或非标准位置,您可能希望托管表存储到当前用于该领域的存储位置。
在转换过程中,Databricks 会将表的数据和事务日志复制到您设置的托管存储位置,因此托管表会存储在您指定的位置。
总结
托管表在自动化表维护的同时,使数据可以保留在您拥有的存储中。这与其他托管平台不同,其他平台通常将表数据存储在提供商控制的存储中。您可以在元数据存储库、目录或模式级别控制存储位置,更改新表的存储位置,并在将外部表转换为托管表时选择存储位置。您的数据保持在开放格式中,可通过 Iceberg Rest Catalog 和 Unity Catalog 开放 API 访问。
当您准备设置或更改托管存储位置时,托管存储文档将提供具体细节。
能力对比
Databricks Unity Catalog | 其他平台 --- | --- 数据存储在客户拥有的存储中 | ✅ 是 | 通常是专有的 开放表格式(Iceberg 和 Delta) | ✅ 支持 | 根据格式而定 通过行和列级治理实现外部工具的读写访问 | ✅ 通过 Iceberg REST Catalog 或 Unity Catalog 开放 API | 有限 可在目录/模式级别控制存储位置 | ✅ SET MANAGED LOCATION | 不常见
定义
这些术语中有很多重复使用了相同的几个词,容易混淆。以下是本文中每个术语的具体含义。
- 托管表:由 Unity Catalog 为您管理数据和生命周期的表。创建时不需要包含 LOCATION 子句。
- 托管存储位置:元数据存储库、目录或模式的托管表和卷被写入的云存储路径。通过 SET MANAGED LOCATION 子句进行设置。
- 外部位置:一个 Unity Catalog 对象,将云路径与存储凭证配对,用于管理对路径的访问权限。外部位置同时管理外部表和托管存储:一个目录或模式级别的托管存储位置位于其中。
- 客户自有存储:一种存储选项,其底层云存储位于客户自己的云账户中。这构成了 Databricks 中绝大多数表的存储方式。
- 默认存储:一种替代存储选项,Databricks 会为您创建底层云存储,而不是您自己提供存储桶。
- ALTER CATALOG / ALTER SCHEMA … SET MANAGED LOCATION:更改目录或模式下新托管表和卷写入位置的命令。现有表不受影响。
- 外部转托管转换(ALTER TABLE … SET MANAGED):将外部表转换为托管表的命令。在转换过程中,数据和事务日志会被复制到当前托管存储位置。
常见问题
- Unity Catalog 是将托管表数据存储在 Databricks 拥有的存储中,还是我的云账户中?
存储在您的账户中。托管表数据会写入您云账户中的存储(如 S3、ADLS 或 GCS),具体位置由您在元数据存储库、目录或模式上设置的托管存储位置决定。Databricks 管理表的布局和生命周期,但底层文件存储在您拥有并注册到 Unity Catalog 的存储桶或容器中,而非 Databricks 控制的账户中。
- Unity Catalog 的托管表是否会将我锁定在 Databricks 中?
不会。托管表使用 Iceberg 和 Delta 等开放表格式,这些格式存储在您拥有的云存储中。外部引擎可通过 Iceberg REST Catalog 和 Unity Catalog 的开放 API 读写这些表,因此您的数据不会被专有接口限制。您保留存储的所有权,数据保持开放格式,访问通过开放标准进行。托管表不会造成锁定:无论是托管表还是外部表,进出 Databricks 的迁移同样可行,且数据在物理位置上可以保持不变。
- 我可以将某些数据存储在单独的存储中以满足合规性或数据驻留要求吗?
可以。您可以为特定目录或模式设置独立的托管存储位置,与其他存储隔离,从而将不同国家或监管区域的数据存储在独立的存储中,或为特定团队或业务部门分配存储成本。
- 除了 Databricks,其他引擎和工具能否读写我的托管表?
可以。托管表可通过 Iceberg REST Catalog 和 Unity Catalog 的开放 API 进行读写,因此 Apache Spark、Trino 和 Flink 等外部引擎可以访问它们。Unity Catalog 会处理存储访问的治理,防止绕过它导致的数据损坏。通过路径重定向和兼容模式,也可以直接通过路径访问。
- 在设置后,我可以更改托管表数据的存储位置吗?
是的。当组织需要物理隔离时(例如重组、新存储桶或新区域),请使用 ALTER CATALOG … SET MANAGED LOCATION 或 ALTER SCHEMA … SET MANAGED LOCATION 将新表指向不同的位置。现有表的位置保持不变,新表会存储在新位置。每当将外部表转换为托管表时,其数据会被复制到您设置的托管位置,因此可以在同一操作中将数据迁移至正确的存储位置。
订阅以获取最新文章
订阅我们的博客,即可将最新文章发送到您的邮箱。
注册
查看所有博客
slice-start id="_gatsby-scripts-1"
slice-end id="_gatsby-scripts-1"