はじめに
GLB事業部Lakehouse部の阿部です。
今年のData + AI SUMMITで発表されたLakehouse Federation(レイクハウスフェデレーション)をさわってみました。
https://learn.microsoft.com/ja-jp/azure/databricks/query-federation/postgresql
注意
記事執筆時点では、この機能はパブリックプレビュー段階です。
Lakehouse Federationとは
複数の外部データベースからデータをLakehouseに移行せずに、Lakehouseからアクセスできる機能です。
データベースを外部カタログとしてミラーリングし、Unity Catalogのオブジェクトとしてセキュリティ保護します。
もちろん、そのデータをデータパイプラインに利用することも可能です。
(https://vimeo.com/875314307から引用)
ここで、Lakehouse Federationの典型的なワークフローを紹介します。
DISCOVER 外部データソースを外部カタログとして登録(ミラーリング)する。
QUERY データソースのメタデータやデータ自体、テーブルの確認をする。
GOVERN Unity Catalogのオブジェクトとして管理するため、例えば、テーブルやカラム、行レベルでアクセス権限の付与を行う。
PRODUCTIONIZE DLTパイプラインにおけるデータソースやMatearized Viewとしての利用、Structured Streamingでの使用といったworkflowsで利用する。
このように、Unity Catalogで管理されたセキュアなデータを本番環境でのworkflowに利用できます。
Lakehouse Federationを使う理由
データソースが複数の組織に散在することで、以下の課題が生まれます。
データが複数のデータソースに散らばっており、保管場所や認証の面からアクセスが難しい。
データを外部データソースからDWHなどのプラットフォームに移行するには労力がかかるが、データの価値と労力が見合わない。
複数のデータソースに散らばることで、データガバナンスが効いていない
詳しくは公式のドキュメントに書いています。
これらの課題を解決するために、Lakehouse Federationを使います。
たとえば、複数のデータソースからデータを外部カタログにミラーリングした後、お互いのテーブルをJoinしてtransformationを行います。
このようにして、メダリオンアーキテクチャにおけるデータ品質が高いsilver, gold tableを作成できます。
それでは、実際にLakehouse Federationを使ってみます。
postgreSQLと接続する
使用するデータベースは、EC2にインストールしたpostgreSQLとします。
postgreSQLのインストールや設定は、こちらの記事で解説しています。
https://techblog.ap-com.co.jp/entry/2023/11/07/090325
UIとクエリーでの両方の設定が可能であるため、どちらも解説します。
UIで設定する場合
CatalogからConnectionsを選択し、画面右上のCreate connectionボタンをクリックします。
表示されたポップアップ画面から各種設定を行います。
Connection name: 自分で接続名を決めて入力します。
Connection type: データベース種類からPostgreSQLを選択します。
User: postgreSQLのユーザー名
Password: postgreSQLのパスワード
Host: データソースのhost名を入力します。ここではEC2のパブリックIPアドレスを入力しました。
画面左下のTest connectionをクリックし、接続テストします。
※ここで接続テストを通らないと、次に行う接続情報の登録ができても接続できません。
接続テストに通りました。
Createボタンをクリックし、接続情報を登録します。
Catalog ExplorerにpostgreSQLのアイコンが表示され、接続情報を登録できました。
sqlで設定する場合
CREATE CONNECTION postgresql_ec2_abe TYPE postgresql OPTIONS ( host '<host_name>', port '5432', user 'postgres', password 'XXXXX' );
外部カタログにpostgresqlをミラーリングする
postgreSQLをUnity Catalog内のオブジェクトとして管理するため、外部カタログにミラーリングします。
先ほど登録したconnection nameをクリックし、Create catalogをクリックすると以下の画面がポップアップします。
Databaseには、postgresqlの中に作成したデータベース名を入力します。
以下のように、クエリでも外部カタログを作成できます。
CREATE FOREIGN CATALOG IF NOT EXISTS dvdrental USING CONNECTION postgresql_ec2 OPTIONS (database 'dvdrental');
Catalog Explorerを確認すると、postgreSQLというカタログへのミラーリングが確認できます。
作成したカタログにクエリーを叩いて、actorテーブルの中身を確認します。
SELECT * FROM postgresql.public.actor;
実行結果です。
Lakehouse Federationによって外部データベースのデータを読み取れました。
おわりに
Lakehouse Federationを用いて、外部データソースであるpostgreSQLからのデータを確認できました。
今回は行いませんでしたが、他のテーブルとのJoin, Transformationを通して新たなテーブルを作成できるため、silverやgold tableといったデータ品質が高いテーブルを用意できます。
ユースケースに応じてLakehouse Federationを効果的に活用したいと思います。
最後までご覧いただきありがとうございます。
私たちはDatabricksを用いたデータ分析基盤の導入から内製化支援まで幅広く支援をしております。
もしご興味がある方は、お問い合わせ頂ければ幸いです。
そして、一緒に働いていただける仲間も募集中です!
APCにご興味がある方の連絡をお待ちしております。