返回

2026指南:Unity Catalog托管表存储规则

RSS Databricks Blog AI 逐段翻译 发布 2026-09-30 00:40 收录于 10-01
DataHot 速览

Databricks 官方博客介绍 Unity Catalog 托管表的存储模型:表数据仍存放在用户自有的云存储账户(如 S3、ADLS、GCS)中,而非厂商控制的存储或专有格式。无论使用 Iceberg 还是 Delta,Databricks 都会在用户选择的位置自动处理数据布局、调优和清理。Unity Catalog 通过开放 API 和凭证下发,让 Apache Spark、Flink、Trino、Kafka Connect、Snowflake 等外部工具以受治理方式读写托管表,避免复制数据。文章说明如何选择或更改 Databricks 托管存储位置。

为什么值得关注:对数据平台与湖仓从业者,理解 Unity Catalog 托管表的存储归属、开放格式互操作和治理访问机制,有助于评估数据主权、跨引擎架构与平台选型。

本文目录 8 节
  1. 你的表保留在你拥有的存储中
  2. 设计上开放
  3. 你控制数据所在的位置
  4. 当你需要独立存储时拥有更多控制
  5. 在转换为托管表时选择数据的存放位置
  6. 总结
  7. 定义
  8. 常见问题解答

译文

AI 逐段翻译

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 的开放 API 读写托管表。通过开放 API 和凭证分发实现安全访问,使外部工具能够与受治理的数据交互而无需复制数据。这简化了架构,并在分析和 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): 该命令用于将外部表转换为托管表。转换期间,数据和事务日志会被复制到当前托管存储位置。

常见问题解答

1. Unity Catalog 将托管表数据存储在哪里,是 Databricks 拥有的存储还是我自己的云账户?

在你自己账户中。托管表数据会写入你自己账户中的云存储,无论是 S3、ADLS 还是 GCS,位置是你在元存储、目录或模式上设置的托管存储位置。Databricks 管理表的布局和生命周期,但底层文件位于你拥有并向 Unity Catalog 注册的存储桶或容器中,而不是 Databricks 控制的账户中。

2. Unity Catalog 托管表会让我被锁定在 Databricks 上吗?

不会。托管表使用包括 Iceberg 和 Delta 在内的开放表格式,这些格式保留在你拥有的云存储中。外部引擎可以通过 Iceberg REST Catalog 和 Unity Catalog 的开放 API 对其读写,因此你的数据不会被困在专有接口之后。你保留存储的所有权,数据保持开放格式,访问通过开放标准进行。托管表不会造成锁定:在托管表上迁入或迁出 Databricks 与在外部表上一样可行,在两种情况下,你都可以让数据在物理上留在同一位置。

3. 出于合规或数据驻留要求,我可以将某些数据保存在单独的存储中吗?

可以。如果有需要,你可以为特定目录或模式指定其自己的托管存储位置,与其他所有内容分开,以便将不同国家或监管制度的数据保存在不同的存储中,或将存储成本归属到特定团队或业务部门。

4. Databricks 以外的引擎和工具可以写入和读取我的托管表吗?

可以。托管表可通过 Iceberg REST Catalog 和 Unity Catalog 的开放 API 进行读取或写入,因此 Apache Spark、Trino 和 Flink 等外部引擎可以访问它们。Unity Catalog 负责存储访问的治理,防止绕过它们可能导致的数据损坏。还提供基于路径的直接访问,方式包括 基于路径的重定向 和 兼容模式。

5. 在设置之后,我可以更改托管表数据的存储位置吗?

可以。使用 ALTER CATALOG … SET MANAGED LOCATION 或 ALTER SCHEMA … SET MANAGED LOCATION 可在你的组织需要物理分离发生变化时,将新表指向不同的位置:重组、新存储桶、新区域。现有表仍留在原处,新表会落在新位置。每当你将外部表转换为托管表时,其数据会被复制到你设置的位置,因此你可以在同一步骤中将数据迁移到正确的归属位置。

这篇内容对你有用吗?

反馈只用于改善内容筛选,不等同于收藏

分享这条资讯
分享海报
保存图片
iOS 也可以长按图片保存