0
0

More than 1 year has passed since last update.

Databricksのオープンデータ共有プロトコルDelta Sharingのウォークスルー

Posted at

Delta SharingはDatabricksが開発したオープンなデータ共有プロトコルです。同じプラットフォームを使用していなくても、セキュアにデータを共有することができます。

本書は以下で説明されている手順を実際に実行します。

ここでは、Databricksのデータを共有して、ローカルマシンのVSCodeから共有データを参照します。

データの共有

データ提供者が以下の作業を行います。

  1. Databricksのデータエクスプローラにアクセスします。左ペインでDelta Sharingを展開します。
    Screenshot 2023-04-07 at 14.42.39.png
  2. データを共有をクリックして、共有(Share)を作成します。
    Screenshot 2023-04-07 at 14.44.22.png
  3. 作成した共有の中にテーブルを登録することで、データの共有が可能となります。アセットを管理 > テーブルを追加を選択します。
    Screenshot 2023-04-07 at 14.45.00.png
  4. 共有するテーブルを選択して、保存をクリックします。
    Screenshot 2023-04-07 at 14.45.54.png
    Screenshot 2023-04-07 at 14.46.32.png

受信者の作成

テーブルを共有するだけでは、データは共有されません。このデータを参照する受信者オブジェクトを作成する必要があります。

  1. 受信者を追加をクリックします。+新規受信者を作成を選択します。
    Screenshot 2023-04-07 at 14.47.43.png
  2. ここでは組織外との共有を行うので、ライブラリ名のみを入力して受信者を作成および追加をクリックします。
    Screenshot 2023-04-07 at 14.48.51.png
  3. 上のステップで作成した共有に受信者オブジェクトを紐付けます。
    Screenshot 2023-04-07 at 14.49.41.png
  4. 受信者オブジェクトを使用する組織、ユーザーに共有するアクティベーションリンクが表示されます。このリンクはセキュアな手段で当該組織、ユーザーに共有してください。このリンクが第三者に漏れないように注意してください。
    Screenshot 2023-04-07 at 14.50.56.png

共有データの参照

以降は受信者のローカルマシンでの作業となります。

  1. 受領したアクティベーションリンクにアクセスします。
    Screenshot 2023-04-07 at 14.52.56.png

  2. Download Credential Fileをクリックして、資格情報ファイルをダウンロードします。このリンクは一度しか利用できないので注意してください。

  3. config.shareというファイルがローカルにダウンロードされます。

  4. この資格情報ファイルを適切な場所に格納します。

  5. VSCodeを起動し、以下のソースコードを記述します。

    Python
    import 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))
    
  6. 実行すると、共有テーブル一覧とテーブルの中身が表示されます。

    ------- 共有テーブル一覧 -------
    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データフレームとして操作することが可能です。是非お試しください!

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0