このトピックでは、Databricks Unity Catalog の Delta Sharing を使用して、Alibaba Cloud EMR Serverless Spark がクラウド間で共有データに読み取り専用でアクセスできるように設定する方法について説明します。この方法により、データサイロを解消し、クロスクラウドでのデータ分析やデータ同期などのシナリオをサポートします。
主要なフロー
このプロセスでは、Databricks でデータ共有を設定し、その結果得られるアクセス認証情報を Alibaba Cloud EMR Serverless Spark タスクに提供します。
Databricks 側:
ShareとRecipientを作成します。共有するテーブルをShareに追加します。次に、Recipientのアクセストークンを含む認証情報ファイルを生成します。認証情報の転送:ダウンロードした認証情報ファイルを Alibaba Cloud Object Storage Service (OSS) にアップロードし、Spark タスクからアクセスできるようにします。
Serverless Spark 側:Delta Sharing コネクタで設定された Spark タスクを作成して実行します。このタスクは、OSS から認証情報ファイルを読み取り、パブリックネットワーク経由で Databricks のデータ共有エンドポイントにアクセスし、計算用のデータをプルします。
操作手順
ステップ 1:Databricks でのデータ共有の設定
このステップでは、Databricks で共有するデータを定義し、外部アクセス用の安全な認証情報を作成します。
Share の作成
Databricks ワークスペースにログインします。左側のナビゲーションウィンドウで、[Catalog] > [Delta Sharing] > [Shared by me] に移動します。

[Share data] をクリックして、新しい
Shareを作成します。Shareは、共有したいテーブルを整理・管理するための論理的なコンテナーです。
資産の追加
新しい
Shareで、[Share name] を入力し、データ資産を追加します。外部と共有したいテーブルを 1 つ以上選択します。
Serverless Spark は、設定された Share 名と対応するテーブルを使用して、共有データにアクセスします。

Recipient の作成
まだ
Recipientを作成していない場合は、ドロップダウンリストからRecipientを作成できます。また、Shareページに戻り、[Add recipient] をクリックして新しいデータRecipientを作成することもできます。
Recipient の設定と認証情報ファイルの生成
Recipientのアクセストークンを含む認証情報ファイルを生成します。
Recipient タイプ:
Openを選択します。Openタイプは、EMR Serverless Spark など、Delta Sharing プロトコルをサポートする任意のクライアントとのオープンな共有に使用されます。これにより、ポータブルな認証情報ファイルが生成されます。Databricksタイプは、Databricks プラットフォーム間の内部共有に使用されます。説明Recipient タイプが Open に設定されていることを確認してください。Open オプションが選択できない場合は、右上の [Organization] > [View Delta Sharing Settings] に移動し、[External delta sharing] を有効にします。


認証方法:
Tokenを選択します。Token のライフサイクル:
Tokenの有効期間を設定します。最大期間は 365 日です。
プロセスが完了すると、[Activation link] が生成されます。
認証情報ファイルのダウンロード
前のステップで取得した [Activation link] をブラウザで開きます。システムにより、
.share拡張子の認証情報ファイルをダウンロードするよう求められます。
ステップ 2:Alibaba Cloud 環境の準備
このステップでは、Databricks で生成された認証情報を Alibaba Cloud 上に安全に保存し、Spark タスクのランタイム環境を準備します。
OSS への認証情報ファイルのアップロード
前のステップでダウンロードした
.share認証情報ファイルを OSS バケットにアップロードします。ファイルの完全な OSS パス (例:
oss://your-bucket/path/to/credential.share) を記録しておきます。説明セキュリティに関する推奨事項:
認証情報ファイルは、非公開権限を持つバケットに保存してください。
Spark タスクの実行に使用する RAM ロールに、対象の OSS ファイルに対する読み取り権限があることを確認してください。
パブリックネットワークアクセスの設定
パブリックネットワークアクセスが可能な virtual private cloud (VPC) を準備し、Serverless Spark 用に互換性のある vSwitch を設定する必要があります。この設定により、Serverless Spark はパブリックネットワーク経由で Databricks Delta Sharing にアクセスできます。Alibaba Cloud は、VPC のパブリックネットワークアクセスを有効にするために NAT Gateway を提供しています。詳細については、「NAT Gateway」をご参照ください。Serverless Spark がサポートするゾーンと vSwitch の一覧については、「サポートされているゾーンと vSwitch の一覧」をご参照ください。
ステップ 3:Serverless Spark でのデータアクセス
このステップでは、credential file を使用して Databricks のデータを読み取る Spark タスクを作成し、設定します。
ネットワーク接続の追加
ワークスペースでネットワーク接続を追加する際に、パブリックネットワークアクセス用に設定した VPC と、それに対応する vSwitch を選択します。詳細については、「ネットワーク接続の追加」をご参照ください。
SQL ファイルの準備とアップロード
共有データセットを DLF に書き込むための SQL ファイルを準備します。
-- 一時テーブルを作成します -- 認証情報ファイルのパスと共有データセットを置き換えてください -- demo_share は以前に作成した Share の名前です -- default.alitable は共有ライブラリとテーブルです CREATE TEMPORARY TABLE dbc_delta_sharing USING deltaSharing LOCATION 'oss://your-bucket/path/to/credential.share#demo_share.default.alitable'; SELECT * FROM dbc_delta_sharing limit 10; -- データベースとテーブルを作成します CREATE database if NOT EXISTS demo_day_ss_dlf; DROP TABLE if EXISTS demo_day_ss_dlf.dw_songs_ss_dlf; CREATE TABLE demo_day_ss_dlf.dw_songs_ss_dlf SELECT * FROM dbc_delta_sharing limit 10; SELECT * FROM demo_day_ss_dlf.dw_songs_ss_dlf limit 10;ファイル管理機能を使用して、SQL ファイルを Serverless Spark ワークスペースにアップロードします。詳細については、「ファイルの管理」をご参照ください。
データカタログの追加
[データカタログの追加] ダイアログボックスで、
DLF Data Catalogを選択します。データカタログの詳細については、「データカタログの管理」をご参照ください。Spark タスクの作成
Notebook タスク
Notebook セッションの作成
[セッションマネージャー] ページで、Notebook セッションを作成します。以下のパラメーターを設定し、その他はデフォルト設定のままにします。
パラメーター
説明
名前
Notebook セッションの名前を入力します。
エンジンバージョン
最新バージョンを推奨します。このトピックでは esr-4.6.0 を使用します。
ネットワーク接続性
作成したネットワーク接続を選択します。
Spark 設定
以下の設定パラメーターを追加します。
spark.jars.packages io.delta:delta-sharing-spark_2.12:3.1.0 spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension,org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalogNotebook タスクの作成
[データ開発] ページで、[インタラクティブ開発] タイプの Notebook タスクを作成します。以下のコードをコピーして保存します。
-- 一時テーブルを作成します -- 認証情報ファイルのパスと共有データセットを置き換えてください -- demo_share は以前に作成した Share の名前です -- default.alitable は共有ライブラリとテーブルです spark.sql("CREATE TEMPORARY TABLE dbc_delta_sharing USING deltaSharing LOCATION 'oss://your-bucket/path/to/credential.share#demo_share.default.alitable';") spark.sql("SELECT * FROM dbc_delta_sharing limit 10;").show()結果の表示
タスクの実行後、結果は次の図のように表示されます。

SQL タスク
[データ開発] ページで、[バッチジョブ] タイプの SQL タスクを作成します。SQL タスクの作成方法の詳細については、「バッチジョブまたはストリーミングジョブの開発」をご参照ください。
タスクパラメーターの設定
タスク設定ページで、以下のパラメーターを設定し、その他はデフォルト設定のままにします。
パラメーター
説明
SQL ファイル
タスクの送信に必要なファイルです。
[タイプ] を [ワークスペースリソース] に設定し、ドロップダウンリストから SQL ファイルをアップロードします。
エンジンバージョン
最新バージョンを推奨します。このトピックでは esr-4.6.0 を使用します。
ネットワーク接続性
作成したネットワーク接続を選択します。
Spark 設定
以下の設定パラメーターを追加します。
spark.jars.packages io.delta:delta-sharing-spark_2.12:3.1.0 spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension,org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalogタスクの実行と結果の表示
[実行] をクリックしてタスクを送信します。タスクの実行後、実行履歴セクションに移動します。タスクの [操作] 列で [ログ詳細] をクリックしてログ情報を表示します。

DLF データをクエリします。

関連ドキュメント
他の種類の Spark タスクを使用して Databricks Delta Sharing からデータを読み取る方法の詳細については、「delta-sharing」をご参照ください。