Delta Sharing のエグレス コストを監視および管理する (プロバイダー向け)
この記事では、Delta Sharing を使ってデータと AI 資産を共有するときに、クラウド ベンダーのエグレス コストを監視および管理するために使用できるツールについて説明します。
他のデータ共有プラットフォームとは異なり、Delta Sharing にデータ レプリケーションは必要ありません。 このモデルには多くの利点がありますが、クラウドまたはリージョン間でデータを共有する場合、クラウド ベンダーからデータ エグレス料金が請求される可能性があることを意味します。 Delta Sharing を使ってリージョン内でデータと AI 資産を共有する場合、エグレス コストは発生しません。
エグレス料金を監視および管理するために、Databricks には次の機能があります。
データをレプリケートしてエグレス コストを回避する
エグレス コストを回避するアプローチの 1 つは、受信者が使っているリージョンに、プロバイダーが共有データのローカル レプリカを作成して同期することです。 もう 1 つのアプローチは、受信者がアクティブなクエリのために共有データをローカル リージョンに複製し、共有テーブルとローカル クローン間の同期を設定することです。 このセクションでは、さまざまなレプリケーション パターンについて説明します。
増分レプリケーションに 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 でテーブルを複製する」と「ワークフローのスケジューリングとオーケストレーション」をご覧ください。
増分レプリケーションのために共有テーブルで変更データ フィード (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 Warehouse 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
。 メタストア管理者には、既定でこの特権があります。
R2 バケットを Azure Databricks の外部の場所としてマウントする
Cloudflare R2 バケットを作成します。
「R2 バケットを構成する」を参照してください。
R2 バケットへのアクセスを許可するストレージ資格情報を Unity Catalog に作成します。
「ストレージ資格情報を作成する」を参照してください。
ストレージ資格情報を使って、Unity Catalog に外部の場所を作成します。
「クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」を参照してください。
外部の場所を使って新しいカタログを作成する
新しい外部の場所をマネージド保存場所として使うカタログを作成します。
「カタログの作成」を参照してください。
カタログを作成するときは、以下の手順を実行します。
カタログ エクスプローラー
- Standard カタログの種類を選びます。
- [保存場所] で、[保存場所の選択] を選び、外部の場所として定義した 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 でテーブルを複製する」と「ワークフローのスケジューリングとオーケストレーション」をご覧ください。
新しいテーブルを共有する
共有を作成するときに、R2 に保存されている新しいカタログ内のテーブルを追加します。 このプロセスは、テーブルを共有に追加する場合と同じです。
「Delta Sharing の共有を作成および管理する」参照してください。