本文概述如何使用 Databricks 到 Databricks Delta Sharing 与任何 Databricks 用户安全共享数据,而不管帐户或云主机是什么,但前提是该用户有权访问启用了 Unity Catalog 的工作区。
注意
如果你是数据接收者(正在与其共享 Databricks 数据的用户或用户组),请参阅使用增量共享访问与你共享的数据(适用于接收者)。
谁应使用 Databricks 到 Databricks Delta Sharing?
有三种使用 Delta Sharing 共享数据的方法。
- 本文中的 Databricks 到 Databricks 共享协议允许你与用户共享已启用 Unity 目录的工作区中的数据,这些用户也有权访问已启用 Unity 目录的 Databricks 工作区。 - 此方法使用内置于 Azure Databricks 中的 Delta Sharing 服务器,并为提供者和接收者提供笔记本共享、Unity 目录数据治理、审核和使用情况跟踪相关支持。 与 Unity 目录的集成简化了提供者和接收者的设置和治理,并提高了性能。 
- Databricks 开放共享协议允许你与任何计算平台上的用户共享在已启用 Unity 目录的 Databricks 工作区中所管理的数据。 
- 开源 Delta Sharing 服务器的客户管理的实现,它让你能够在任何平台之间进行共享(无论是否是 Databricks)。 
有关 Delta Sharing 的简介以及这三种方法的相关详细信息,请参阅什么是 Delta Sharing?。
Databricks 到 Databricks Delta Sharing 工作流
本部分提供 Databricks 到 Databricks 共享工作流的概要概述,并提供每个步骤的详细文档链接。
在 Databricks 到 Databricks Delta Sharing 模型中:
- 数据接收者为数据提供程序提供 Databricks Unity Catalog 元存储的唯一共享标识符,该元存储已附加到供接收者(代表用户或用户组)用来访问数据提供程序所共享的数据的 Databricks 工作区。 - 有关详细信息,请参阅步骤 1:请求接收者的共享标识符。 
- 数据提供程序在提供程序的 Unity Catalog 元存储中创建一个共享。 此命名对象包含在元存储中注册的表、视图、卷和笔记本的集合。 - 有关详细信息,请参阅创建和管理 Delta Sharing 的共享。 
- 数据提供程序在提供程序的 Unity Catalog 元存储中创建一个接收者对象。 此命名对象表示要访问共享中包含的数据的用户或用户组,以及 Unity Catalog 元存储的共享标识符,该元存储已附加到供用户或用户组用来访问该共享的工作区。 共享标识符是启用安全连接的关键标识符。 - 有关详细信息,请参阅步骤 2:创建接收者。 
- 数据提供程序为接收者授予对共享的访问权限。 - 有关详细信息,请参阅管理对 Delta Sharing 数据共享的访问权限(适用于提供者)。 
- 该共享在接收者的 Databricks 工作区中可用,用户可以使用目录资源管理器和 Databricks CLI 来访问它,也可以通过在 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中使用 SQL 命令来访问它。 - 要访问共享中的表、视图、卷和笔记本,元存储管理员或特权用户必须从共享创建目录。 然后,该用户或其他被授予相应特权的用户可以向其他用户授予对目录中的目录和对象的访问权限。 授予对共享目录和数据资产的权限的工作方式与对待 Unity Catalog 中注册的任何其他资产一样,重要的区别是,用户只能被授予从 Delta Sharing 共享创建的目录中的对象的读取访问权限。 - 共享笔记本位于目录级别,对目录具有 - USE CATALOG权限的任何用户都可以访问它们。
使用历史记录共享改善表读取性能
Databricks 到 Databricks 表共享可通过启用历史记录共享来改善性能。 共享历史记录通过利用云存储中的临时安全凭证(范围限定为提供程序的共享 Delta 表的根目录)来提高性能,从而使性能与直接访问源表相当。
- 对于新表共享,请在创建表共享时指定 WITH HISTORY。 请参阅将表添加到共享。 在 Databricks Runtime 16.2 及更高版本上使用计算共享表时,WITH HISTORY是默认值。
- 对于现有表共享,必须更改共享以共享表历史记录。 请参阅更新共享。 在 Databricks Runtime 16.2 及更高版本上使用计算共享表时,WITH HISTORY是默认值。
共享整个架构时,架构中的所有表默认与历史记录共享。
注意
启用了分区的表不会获得历史记录共享的性能优势。 请参阅指定要共享的表分区
历史记录共享数据隐私
提供程序应注意,Databricks 到 Databricks 历史记录共享向 Delta 共享收件人授予了对数据文件和 Delta 日志的临时读取访问权限。 Delta 日志包含每个表版本的提交历史记录、有关提交者的信息(类似于 GitHub 提交历史记录),以及尚未清空的已删除数据。
云环境中从 Databricks 到 Databricks 的 Delta 共享支持矩阵
Databricks 到 Databricks Delta Sharing 仅在同一环境类型中受支持:商业到商业、GovCloud 到 GovCloud、DoD 到 DoD,或 Azure 中国到 Azure 中国。 不支持跨环境共享(例如从商业云到 AWS GovCloud 或从 AWS GovCloud 到 Azure 中国)。
在此矩阵中,每一行表示提供程序环境(元存储共享数据),每列表示收件人环境(元存储接收共享数据)。 该表指示每种组合是否支持共享。
| 服务提供商 | 接收者:商业云 | 收件人:AWS GovCloud | 收件人:AWS GovCloud DoD | 收件人:由世纪互联运营的 Azure | 
|---|---|---|---|---|
| 商业云 | ✓ | |||
| AWS GovCloud | ✓ | |||
| AWS GovCloud DoD | ✓ | |||
| 由世纪互联运营的 Azure | ✓ |