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