触ったことなかったので触ってみます。
プレビュー
本機能はパブリックプレビューです。
Databricks Clean Roomsとは
データやAIの重要性は増加の一途を辿っています。単一の企業内のみでのデータ活用では得られる示唆に限界があります。パートナーや外部ベンダーとのデータ連携によって、これまでに得られなかったような洞察によってイノベーションの可能性が高まりますが、データ漏えいのリスクは到底無視できるものではありません。
Databricks Clean Rooms(クリーンルーム)では、データをコピーすることなしに安全にデータを共有し、相互承認されたロジックのみの実行を許可する空間を提供します。
これによって、プライバシーに妥協したり、機微データを共有することなしに、すべてのクラウド上の顧客やパートナーと容易にコラボレーションできるようになります。クリーンルームの参加者は自身の既存データを安全に共有、結合することができ、MLに対するネイティブサポートを提供するPythonのような任意の言語を用いて複雑なワークロードを実行することができます。クリーンルームでコラボレーションする際、あなたのデータは移動せず、データがどこでどのように使われるのかに関して常に管理下に置くことができます。
詳細は以下の記事をご覧ください。
ウォークスルー
マニュアルに沿って作業していきます。以降では2者を以下のように呼称します。
- クリエーター: クリーンルームの作成者
- コラボレーター: 作成されたクリーンルームで共同作業を行う人
前提条件
- クリーンルームでコラボレーションする2者のDatabricksアカウントが、両方ともプレビューに参加している必要があります。
クリーンルームの作成
まずは、共同作業の場となるクリーンルームを作成します。
クリエーターの作業
自分のワークスペースでカタログエクスプローラからクリーンルームにアクセスします。
クリーンルームを作成をクリックします。クリーンルームの名称やクラウドプロバイダーとリージョン、説明文を入力します。
ここで重要なのは、コラボレーターの詳細にあるClean Room sharing identifierです。これは、コラボレーターの方から共有いただく必要があります。
コラボレーターの作業
自分のワークスペースでカタログエクスプローラにアクセスし、クリエーター同様にクリーンルームにアクセスします。右上のメタストア名をクリックし、Copy Clean room sharing identfierをクリックして共有識別子をコピーし、クリエーターに共有します。
クリエーターの作業
共有された共有識別子を入力して、クリーンルームを作成をクリックします。クリーンルームのセットアッププロセスが起動します。
データアセットの追加
クリエーターとコラボレーターは、自分のテーブルをデータアセットとして、クリーンルームに共有することができます。クリーンルームにおいては、以下のような仮想的なカタログの配下に各パーティのデータアセットが共有されます。
-
creator
: クリエーターが共有しているデータアセットを格納するカタログ -
collaborator
: コラボレーターが共有しているデータアセットを格納するカタログ
クリエーターの作業
クリエーター側からフライトのテーブルを共有します。
テーブルが共有されると、コラボレーター側でも確認できます。
ノートブックの追加
共有されているデータに対して処理を行うには、ノートブックをクリーンルームに共有する必要があります。ここでは、クリエーター側でノートブックを作成します。
df = spark.table("creator.airlinedata_takaaki_yayoi.flights")
display(df)
ノートブックの実行
クリーンルームでのノートブックの実行には相互承認が必要となります。クリエーターがノートブックを作成した場合、クリエーターはノートブックを実行できません。コラボレーターがノートブックの中身を確認した上で実行する形となります。
以下の例では、クリエーターがノートブックを参照しているので実行ボタンがグレーアウトされています。
コラボレーターの作業
コラボレーターがノートブックにアクセスすると、実行ボタンが活性化しています。
さらにデータアセットを追加
今度は、コラボレーターからもテーブルを共有します。航空会社のコードから航空会社名を紐づけるテーブルを登録します。
コラボレーターの作業
クリエーターの作業
二つのテーブルを結合する新たなノートブックを作成します。
df_airline = spark.table("creator.airlinedata_takaaki_yayoi.flights")
df_lookup = spark.table("collaborator.airlinedata_takaaki_yayoi.lookupcodes")
df_final = df_airline.join(df_lookup, df_airline.UniqueCarrier == df_lookup.UniqueCode)
display(df_final)
クリーンルームに登録します。
再度ノートブックを実行
コラボレーターの作業
クリエーターから共有されたノートブックを確認して実行します。
お互いに持ち寄ったテーブルを用いて処理を実行することができました!