本文概述了使用 Unity Catalog 处理数据所需的云存储连接,以及 Unity Catalog 如何管理对云存储和外部云服务的访问的信息。
注意
如果工作区是在 2023 年 11 月 9 日之前创建的,则可能无法为 Unity Catalog 启用该工作区。 帐户管理员必须为工作区启用 Unity Catalog。 请参阅为工作区启用 Unity Catalog。
Databricks 建议使用 Unity Catalog 卷来管理对云对象存储中已存储的所有数据的访问权限。 Unity Catalog 提供了一套工具,用于配置与云对象存储的安全连接。 这些连接提供完成以下操作的访问权限:
- 将数据引入湖屋。
- 在 Unity Catalog 管理的云存储中创建和读取托管表和非结构化数据的托管卷。
- 注册或创建包含表格数据和外部卷的外部表,其中包含使用云提供程序管理的云存储中的非结构化数据。
- 读取和写入非结构化数据(作为 Unity Catalog 卷)。
为了更具体化,Unity Catalog 以两种主要方式使用云存储:
- 在 Databricks 中创建的托管表和托管卷(非结构化的非表格数据)的默认(或“托管”)存储位置。 这些托管存储位置可以在元存储、目录或架构级别上定义。 在云提供商中创建托管存储位置,但其生命周期完全由 Unity Catalog 管理。
- 存储外部表和卷的存储位置。 这些是指使用 Unity Catalog 管理其 Azure Databricks 访问权限,但使用云提供程序和其他数据平台管理其数据生命周期和文件布局的表和卷。 通常情况下,使用外部表在 Azure Databricks 中注册大量现有数据,或者在需要使用 Azure Databricks 之外的工具对数据进行写访问时使用外部表。
有关托管表与外部表及卷的详细信息,请参阅什么是表?和什么是 Unity 目录卷?
警告
不要为非 Unity 目录身份提供存储级别的访问权限,以访问 Unity 目录托管的表或卷。 这样做会损害数据安全和治理。
授予用户、服务主体或托管标识直接访问包含受 Unity 目录管理的数据的 Azure Data Lake Storage 容器 会绕过 Unity 目录。 这会向过度权限、外泄和未经授权的访问公开数据,同时使审核复杂化并增加管理开销。
Unity "Catalog"托管表不支持直接存储访问。
Azure Databricks 支持 Azure Data Lake Storage 容器和 Cloudflare R2 存储桶作为注册在 Unity Catalog 中的数据和 AI 资产的云存储位置。 R2 主要用于希望避免出现跨云和区域的增量共享等数据流出量费用的用例。 有关详细信息,请参阅使用 Cloudflare R2 副本或将存储迁移到 R2。
为了管理对存储表和卷的底层云存储的访问,Unity Catalog 使用名为外部位置的安全对象,该对象定义云存储位置的路径以及访问该位置所需的凭据。 这些凭据又在名为 存储凭据的 Unity Catalog 安全对象中定义。 通过授予和撤消对 Unity Catalog 中外部位置安全对象的访问权限,可以控制对云存储位置中数据的访问。 通过授予和撤消对 Unity Catalog 中存储凭据安全对象的访问权限,可以控制创建外部位置对象的能力。
如需详细信息,请参阅使用 Unity Catalog 管理对云存储的访问权限。
虽然 Unity Catalog 支持使用云存储 URI 对外部表和外部卷进行基于路径的访问,但 Databricks 建议使用表名读取和写入所有 Unity Catalog 表,并使用 /Volumes
路径访问卷中的数据。
卷是大多数 Azure Databricks 用户应该用来与云对象存储中的非表格数据直接交互的安全对象。 请参阅什么是 Unity Catalog 卷?。
警告
如果使用非 Databricks 客户端或从 Databricks 内部通过路径访问来更新外部表元数据,则这些元数据不会自动同步到 Unity Catalog 的状态。 Databricks 建议不要进行此类元数据更新,但如果执行了更新,则必须运行 MSCK REPAIR TABLE <table-name> SYNC METADATA
才能使 Unity 目录中的架构处于最新状态。 请参阅 REPAIR TABLE。
Azure Databricks 要求使用 Azure Data Lake Storage 作为 Azure 存储服务,用于在 Azure Databricks 中通过 Unity Catalog 治理来处理数据。 使用 Azure Data Lake Storage,可以分离存储和计算成本,并利用 Unity 目录提供的精细访问控制。 如果数据存储在 OneLake(Azure Fabric 数据湖)中,并由 Databricks 处理(绕过 Unity Catalog),则会产生捆绑的存储和计算成本。 与用于存储、读取和写入数据的 Azure Data Lake Storage 相比,读取和写入成本可能高出约 3 倍,写入成本更高 1.6 倍。 Azure Blob 存储也与 Unity Catalog 不兼容。
功能 | Azure Blob 存储 | Azure Data Lake Storage | OneLake |
---|---|---|---|
在 Unity Catalog 中不受支持 | X | ✓ | X |
需要购买其他 Fabric 容量 | X | X | ✓ |
外部引擎支持的操作 |
|
|
有关详细信息,请参阅 OneLake 文档。 |
部署 | 区域 | 区域 | 全局 |
身份验证 | Entra ID 共享访问签名 | Entra ID 共享访问签名 | Entra ID |
存储事件 | ✓ | ✓ | X |
软删除 | ✓ | ✓ | ✓ |
访问控制 | RBAC | RBAC、ABAC、ACL | RBAC(仅表/文件夹,不支持快捷方式 ACL) |
加密密钥 | ✓ | ✓ | X |
访问层级 | 联机存档 | 热、冷、寒、存档 | 仅热 |
Unity Catalog 使用名为服务凭据的安全对象控制对非存储服务的访问。 服务凭证封装了一个长期云凭证,该凭证提供用户需要从 Azure Databricks 连接到的外部服务的访问权限。
服务凭证不适用于管理对用作 Unity Catalog 托管存储位置或外部存储位置的云存储的访问权限。 对于这些用例,请使用存储凭据,如 Unity Catalog 如何控制对云存储的访问?中所述。
有关详细信息,请参阅:
如果你刚刚以管理员身份开始使用 Unity Catalog,请参阅:
如果你是新用户,并且你的工作区已启用 Unity Catalog,请参阅:
若要详细了解如何管理对云存储的访问,请参阅:
若要详细了解如何管理对云服务的访问,请参阅: