监视和管理 OpenSharing 出口成本(对于提供商)

本页介绍在使用 OpenSharing 共享数据和 AI 资产时可用于监视和管理云供应商出口成本的工具。

与其他数据共享平台不同,OpenSharing 不需要数据复制。 此模型具有许多优点,但在跨云或区域共享数据时,云供应商可能会收取数据出口费用。 如果使用 OpenSharing 共享区域中的数据和 AI 资产,则不会产生出口费用。

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

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

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

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

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

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 上克隆表Lakeflow 作业

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

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

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

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

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

Cloudflare R2 对象存储不会产生流出费用。 复制或迁移你共享到 R2 的数据后,即可通过 OpenSharing 共享数据,而无需支付出站流量费用。 但是,这不适用于视图共享,这可能会产生出口费用。 本部分介绍如何将数据复制到 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 位于元存储上。 默认情况下,元存储管理员具有此权限。

Cloudflare R2 的限制

提供者无法共享使用液态聚类和 V2 检查点的 R2 表。

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

  1. 创建 Cloudflare R2 存储桶。

    请参阅 步骤 1:配置 R2 存储桶

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

    请参阅 步骤 2:创建存储凭据

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

    请参阅 步骤 3:创建外部位置

使用外部位置创建新目录

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

请参阅创建目录

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

目录资源管理器

  • 选择“标准”目录类型。
  • 存储位置 下,选择 选择存储位置,然后输入你定义为外部位置的 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 中的表复制到新的目录,该目录使用 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 上克隆表Lakeflow 作业

共享新表

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

请参阅 为 OpenSharing 创建共享