【Databricks】Delta Sharingを利用してデータを共有してみた

【Databricks】Delta Sharingを利用してデータを共有してみた

Clock Icon2025.05.21

データ事業本部のueharaです。

今回は、DatabricksでDelta Sharingを利用してデータを共有してみたいと思います。

はじめに

Delta Sharingについて、Databricksの公式ドキュメントで以下のように説明されています。

Delta Sharingは、使用するコンピューティングプラットフォームに関係なく、他の組織との安全なデータ共有を行うために、Databricksによって開発されたオープンプロトコルです。

引用元

DatabricksでDelta Sharingを利用すると、 Databricks to DatabricksDatabricks to 任意のコンピューティング でリソースの共有をすることができます。

20250521_deltashare_01
(引用元)

Delta Sharingには「Delta Sharingサーバー」が必要であり、もちろん独自でDelta Sharingサーバーを立てることもできますが、Databricksに組み込まれているものを利用すれば特別用意する必要はありません。

20250521_deltashare_17
引用元

独自でサーバー立てたい方は以下を参考にすると良いと思います。

https://github.com/delta-io/delta-sharing

ちなみに、Databricks to Databricks であればテーブルだけでなくノートブックやボリューム、モデルの共有を行うこともできます。

今回は Databricks to 任意のコンピューティング でデータの共有を試したいと思います。

前提

今回は以前作成した以下のテーブルに外部のコンピューティングリソースからアクセスしたいと思います。

20250521_deltashare_16

なお、「任意のコンピューティング」はローカル環境のPythonで pandas を利用してデータを読み込むことを想定します。

プロバイダー(Databricks)側の作業

まずCatalogの設定から『Delta Sharing』を選択します。

20250521_deltashare_02

画面が遷移したらorganizationのDelta Sharingの設定を確認します。

20250521_deltashare_03

ここで『External delta sharing』は『Enabled』に設定しておきます。

20250521_deltashare_04

recipientの作成

次にrecipient(受信者)を作成します。

20250521_deltashare_05

『Recipient name』は任意の値を設定します。私は test_recipient としました。

『Recipient type』は今回は任意のコンピューティングのため『Open』を設定します。

認証はトークンで有効期限は14日としました。

20250521_deltashare_06

作成が完了すると認証ファイルを受け取るためのリンクが発行されるので、どこかに控えておきます。

20250521_deltashare_08

データ共有

次にデータ共有を行います。

Delta Sharingの画面から『Share data』を選択します。

20250521_deltashare_07

『Share name』は任意で設定します。私は test_sharing としました。

20250521_deltashare_09

次に共有するテーブルを選択します。

20250521_deltashare_10

Notebookの共有は特に設定しません。

20250521_deltashare_11

最後にrecipientsの設定です。

先程作成したrecipientを設定して『Share data』を選択します。

20250521_deltashare_12_2

以下のように共有が作成されていればプロバイダー側の設定は完了です。

20250521_deltashare_13

受信者側の作業

プロバイダー側の設定でrecipient(受信者)の作成時に発行されたリンクにアクセスすると、以下のようなCredential Fileをダウンロードすることができます。

20250521_deltashare_14

『Donwload Credential File』ボタンを押下すると config.share がダウンロードされます。

shareファイルには bearerTokenendpoint といった情報が含まれるため、取り扱いにはご注意下さい。

受信者側はこれで準備完了です。

共有データにアクセスしてみた

※以下は受信者目線での作業となります。

まず、 delta-sharing パッケージをインストールします。

$ pip install delta-sharing

先にダウンロードした config.share と同じ階層に test.py を作成し、以下のように記述します。

test.py
import delta_sharing

# shareファイルのパスを指定
share_file_path = "config.share"

# Delta Sharingクライアントの初期化
client = delta_sharing.SharingClient(share_file_path)

# 共有テーブルにアクセスするためのURLを作成
# 形式: <file-path>#<share-name>.<schema-name>.<table-name>
table_url = f"{share_file_path}#test_sharing.default.sample_data_delta"

# データをpandasデータフレームとして読み込む
df = delta_sharing.load_as_pandas(table_url)

# データを確認
print(df.head())

上記Pythonスクリプトを実行したところ、以下の通りデータへのアクセスが確認できました。

20250521_deltashare_15

最後に

今回は、DatabricksでDelta Sharingを利用してデータを共有してみました。

非常に簡単かつセキュアにデータを共有できるため、データの提供者と利用者でのコラボレーションを促進する良い機能だと感じました。

また、今回は1テーブルを1受信者に共有しただけですが、様々なチーム・利用者が絡み複雑になってくると共有データのガバナンスを一元管理できるのも利点になると思います。

参考になりましたら幸いです。

参考文献

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.