增量共享

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 10.4 LTS 及更高版本 勾选“是” 仅 Unity Catalog

增量共享是一种开放协议,用于与其他组织进行安全的数据共享,无论他们使用哪个计算平台。 它可以实时共享 Unity 目录元存储中的表集合,而无需复制这些表,以便数据接收者可以立即开始使用最新版本的共享数据。

Delta Sharing 包含三个组件:

  • 提供程序

    提供程序是使数据可供共享的实体。

  • 共享

    共享为要共享的表定义逻辑分组。

  • 收件人

    接收者标识要与其共享任意数量共享的组织。

有关如何使用 Delta Sharing 的详细指南,请参阅什么是 Delta Sharing?

提供程序

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 11.3 LTS 及更高版本

数据提供程序是表示现实世界中共享数据的组织的对象。 提供程序包含共享,该共享进一步包含共享数据。 提供程序将你添加为收件人后,你可以

示例

-- Change the data provider name locally.
> ALTER PROVIDER `Center for Disease Control` RENAME TO cdc;

-- List the shares the provider has granted you access too.
> SHOW SHARES IN PROVIDER cdc;
 vaccinedata

-- Make the share accessible locally as a catalog.
> CREATE CATALOG cdcdata USING SHARE cdc.vaccinedata;

-- Use the data.
> USE CATALOG cdcdata;
> SELECT COUNT(*) FROM information_schema.tables;
  10

共享

共享是使用 CREATE SHARE 命令实例化的容器。 创建后,可以使用 ALTER SHARE 命令迭代地注册在元存储中定义的现有表的集合。 可以使用其原始名称注册表、按原始架构限定表,或提供备用公开的名称。

必须是元存储管理员或帐户管理员才能创建、更改和删除共享。

示例

-- Create share `customer_share` only if share with same name doesn't exist, with a comment.
> CREATE SHARE IF NOT EXISTS customer_share COMMENT 'This is customer share';

-- Add 2 tables to the share.
-- Expose my_schema.tab1 a different name.
-- Expose only two partitions of other_schema.tab2
> ALTER SHARE customer_share ADD TABLE my_schema.tab1 AS their_schema.tab1;
> ALTER SHARE customer_share ADD TABLE other_schema.tab2 PARTITION (c1 = 5), (c1 = 7);

-- List the content of the share
> SHOW ALL IN SHARE customer_share;
  name              type  shared_object           added_at                     added_by                   comment partitions
  ----------------- ----  ---------------------- ---------------------------- -------------------------- ------- -----------------
  other_schema.tab2 TABLE main.other_schema.tab2 2022-01-01T00:00:01.000+0000 alwaysworks@databricks.com NULL
  their_schema.tab1 TABLE main.myschema.tab2     2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com NULL   (c1 = 5), (c1 = 7)

收件人

接收者是使用 CREATE RECIPIENT 创建的对象,表示要允许访问共享的组织。 创建接收者时,Databricks SQL 会生成一个激活链接,你可以将其发送给组织。 若要在创建后检索激活链接,请使用 DESCRIBE RECIPIENT

创建接收者后,可以使用 GRANT ON SHARE 为接收者授予对所选共享的 SELECT 权限。

必须是元存储管理员才能创建接收者、删除接收者并授予对共享的访问权限。

示例

-- Create a recipient.
> CREATE RECIPIENT IF NOT EXISTS other_org COMMENT 'other.org';

-- Retrieve the activation link to send to other.org
> DESCRIBE RECIPIENT other_org;
  name      created_at                   created_by                 comment   activation_link active_token_id                      active_token_expiration_time rotated_token_id rotated_token_expiration_time
  --------- ---------------------------- -------------------------- --------- --------------- ------------------------------------ ---------------------------- ---------------- -----------------------------
  other_org 2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com other.org https://....    0160c81f-5262-40bb-9b03-3ee12e6d98d7 9999-12-31T23:59:59.999+0000 NULL              NULL

-- Choose shares that other.org has access to
> GRANT SELECT ON SHARE customer_share TO RECIPIENT other_org;