监视和管理 Delta Sharing 流出成本(面向提供者)

本文介绍了可在使用 Delta Sharing 共享数据和 AI 资产时用于监视和管理云供应商流出成本的工具。

与其他数据共享平台不同的是,Delta Sharing 不需要进行数据复制。 此模型具有许多优点,但也意味着在跨云或区域共享数据时,云供应商可能会收取数据流出费用。 如果使用 Delta Sharing 来在区域内共享数据和 AI 资产,则不会产生流出费用。

为了监视和管理流出费用,Databricks 提供了:

复制数据以避免产生流出成本

避免产生流出成本的一种方法是,由提供者在接收者正在使用的区域中创建和同步共享数据的本地副本。 另一种方法是,由接收者将共享数据克隆到本地区域以进行主动查询,从而在共享表与本地克隆之间设置同步。 本部分将讨论多个复制模式。

使用增量深度克隆进行增量复制

提供者可以使用 DEEP CLONE 将增量表复制到其共享到的区域的外部位置。 深层克隆可将源表数据和元数据复制到克隆目标。 深度克隆还可通过标识源表中的新数据并相应地刷新目标来实现增量更新。

CREATE TABLE [IF NOT EXISTS] table_name DEEP CLONE source_table_name
   [TBLPROPERTIES clause] [LOCATION path];

你可以使用以下命令安排 Databricks 工作流作业,从而使用共享表中的最新更新来以增量方式刷新目标表数据:

CREATE OR REPLACE TABLE table_name DEEP CLONE source_table_name;

请参阅克隆 Azure Databricks 上的表Azure Databricks 工作流简介

在共享表上启用更改数据馈送 (CDF),以便进行增量复制

当表通过其 CDF 进行共享时,接收者可以访问这些更改并将其合并到表的本地副本中,以供用户执行查询。 在这种情况下,接收者对数据的访问不会跨越区域边界,流出仅限于刷新本地副本。 如果接收者位于 Databricks 上,他们可以使用 Databricks 工作流作业将更改传播到本地副本。

若要通过 CDF 方式共享表,必须在表上启用 CDF 并将其进行共享 (WITH HISTORY)。

有关使用 CDF 的详细信息,请参阅在 Azure Databricks 上使用 Delta Lake 更改数据馈送将表添加到共享

使用 Cloudflare R2 副本或将存储迁移到 R2

重要

此功能目前以公共预览版提供。

Cloudflare R2 对象存储不会产生流出费用。 通过复制或迁移共享到 R2 的数据,可以使用 Delta Sharing 来共享数据,而不会产生流出费用。 本部分介绍如何将数据复制到 R2 位置,以及如何从源表启用增量更新。

要求

  • 为 Unity Catalog 启用的 Databricks 工作区。
  • Databricks Runtime 14.3 或更高版本,或 SQL 仓库 2024.15 或更高版本。
  • Cloudflare 帐户。 请参阅 https://dash.cloudflare.com/sign-up
  • Cloudflare R2 管理员角色。 请参阅 Cloudflare 角色文档
  • 附加到工作区的 Unity Catalog 元存储的 CREATE STORAGE CREDENTIAL 权限。 默认情况下,帐户管理员和元存储管理员具有此权限。
  • 元存储和在外部位置中引用的存储凭据的 CREATE EXTERNAL LOCATION 权限。 默认情况下,元存储管理员具有此权限。
  • 对外部位置的 CREATE MANAGED STORAGE 权限。
  • 元存储上的 CREATE CATALOG。 默认情况下,元存储管理员具有此权限。

在 Azure Databricks 中将 R2 存储桶装载为外部位置

  1. 创建 Cloudflare R2 存储桶。

    请参阅配置 R2 存储桶

  2. 在 Unity Catalog 中创建存储凭据,以便访问 R2 存储桶。

    请参阅创建存储凭据

  3. 在 Unity Catalog 中使用存储凭据创建外部位置。

    请参阅创建外部位置以将云存储连接到 Azure Databricks

使用外部位置创建新目录

创建使用新外部位置作为托管存储位置的目录。

请参阅创建和管理目录

创建目录时,请执行以下操作:

目录资源管理器

  • 选择“标准”目录类型。
  • 在“存储位置”下,选择“选择存储位置”,然后输入定义为外部位置的 R2 存储桶的路径。 例如: r2://mybucket@my-account-id.r2.cloudflarestorage.com

Sql

使用定义为外部位置的 R2 存储桶的路径。 例如:

  CREATE CATALOG IF NOT EXISTS my-r2-catalog
    MANAGED LOCATION 'r2://mybucket@my-account-id.r2.cloudflarestorage.com'
    COMMENT 'Location for managed tables and volumes to share using Delta Sharing';

将要共享的数据克隆到新目录中的表

使用 DEEP CLONE 将 Azure Data Lake Storage Gen2 中的表复制到使用 R2 进行托管存储的新目录。 深层克隆可将源表数据和元数据复制到克隆目标。 深度克隆还可通过标识源表中的新数据并相应地刷新目标来实现增量更新。

CREATE TABLE IF NOT EXISTS new_catalog.schema1.new_table DEEP CLONE old_catalog.schema1.source_table
  LOCATION 'r2://mybucket@my-account-id.r2.cloudflarestorage.com';

你可以使用以下命令安排 Databricks 工作流作业,从而使用源表中的最新更新来以增量方式刷新目标表数据:

CREATE OR REPLACE TABLE new_catalog.schema1.new_table DEEP CLONE old_catalog.schema1.source_table;

请参阅克隆 Azure Databricks 上的表Azure Databricks 工作流简介

共享新表

创建共享时,请添加存储在 R2 中的新目录中的表。 此过程与将任何表添加到共享的过程相同。

请参阅创建和管理 Delta Sharing 的共享