Delta SharingはDatabricksが開発したオープンなデータ共有プロトコルです。同じプラットフォームを使用していなくても、セキュアにデータを共有することができます。
本書は以下で説明されている手順を実際に実行します。
ここでは、Databricksのデータを共有して、ローカルマシンのVSCodeから共有データを参照します。
データの共有
データ提供者が以下の作業を行います。
- Databricksのデータエクスプローラにアクセスします。左ペインでDelta Sharingを展開します。
-
データを共有をクリックして、共有(Share)を作成します。
- 作成した共有の中にテーブルを登録することで、データの共有が可能となります。アセットを管理 > テーブルを追加を選択します。
- 共有するテーブルを選択して、保存をクリックします。
受信者の作成
テーブルを共有するだけでは、データは共有されません。このデータを参照する受信者オブジェクトを作成する必要があります。
-
受信者を追加をクリックします。+新規受信者を作成を選択します。
- ここでは組織外との共有を行うので、ライブラリ名のみを入力して受信者を作成および追加をクリックします。
-
上のステップで作成した共有に受信者オブジェクトを紐付けます。
- 受信者オブジェクトを使用する組織、ユーザーに共有するアクティベーションリンクが表示されます。このリンクはセキュアな手段で当該組織、ユーザーに共有してください。このリンクが第三者に漏れないように注意してください。
共有データの参照
以降は受信者のローカルマシンでの作業となります。
-
Download Credential Fileをクリックして、資格情報ファイルをダウンロードします。このリンクは一度しか利用できないので注意してください。
-
config.share
というファイルがローカルにダウンロードされます。 -
この資格情報ファイルを適切な場所に格納します。
-
VSCodeを起動し、以下のソースコードを記述します。
Pythonimport delta_sharing # 資格情報ファイルへのパス share_file_path = '/Users/takaaki.yayoi/Python/delta-sharing/config.share' # SharingClientの作成 client = delta_sharing.SharingClient(share_file_path) # すべての共有テーブルの一覧 print("------- 共有テーブル一覧 -------") #print(client.list_all_tables()) shares = client.list_shares() for share in shares: schemas = client.list_schemas(share) for schema in schemas: tables = client.list_tables(schema) for table in tables: print(f'name = {table.name}, share = {table.share}, schema = {table.schema}') # テーブルの読み込み print("------- データロード結果 -------") # テーブルのURL # {profile_file}#{share_id}.{database}.{table} table_url = f"{share_file_path}#takaakiyayoi-share.default.pdf_table" #table_url = f"{share_file_path}#takaakiyayoi-share.default.yellowtaxi_trips" # データロードにdelta sharingクライアントを使用 pandas_df = delta_sharing.load_as_pandas(table_url) print(pandas_df.head(10))
-
実行すると、共有テーブル一覧とテーブルの中身が表示されます。
------- 共有テーブル一覧 ------- name = pdf_table, share = takaakiyayoi-share, schema = default name = yellowtaxi_trips, share = takaakiyayoi-share, schema = default ------- データロード結果 ------- id_col dummy_col dummy_date 0 0 1 2023-03-02 1 1 1 2023-03-02 2 2 1 2023-03-02 3 3 1 2023-03-02 4 4 1 2023-03-02 5 5 1 2023-03-02 6 6 1 2023-03-02 7 7 1 2023-03-02 8 8 1 2023-03-02 9 9 1 2023-03-02
これはデータがコピーされているのではなく、ライブのデータを参照しています。このため「古いデータを参照してしまった!」ということはなく、安心して共有データを活用することができます。以降は通常のpandasデータフレームとして操作することが可能です。是非お試しください!