以前、こちらの記事を書きましたが、アカウントストレージやマネージドIDのセットアップ手順を端折ってましたので、きちんとウォークスルーします。自分のAzureの知識チェックも兼ねます。
こちらの記事も参考になります。
なお、最近ではUnity Catalogは自動で有効化されるようになっています。こちらでは手動での有効化が必要な場合の手順をまとめています。
Databricks は、2023 年 11 月 9 日、アカウント全体で順次ロールアウトする Unity Catalog の新しいワークスペースの自動有効化を開始しました。
Unity Catalogの有効化
マニュアルはこちらにありますが、字が多くて正直取っ付きにくいです。なので、可能な限りスクリーンショットで説明していきます。
全体的な流れは以下の通りです。
- Azure Databricksワークスペースの作成
- Unity Catalog用ストレージアカウント、コンテナーの作成
- Unity Catalog用マネージドIDの作成
- DatabricksアカウントコンソールでのUnity Catalogメタストアの作成
- メタストアをAzure Databricksワークスペースにアタッチ
- 動作確認
重要!
Azure DatabricksワークスペースとUnity Catalogメタストアは同じリージョンである必要があります。また、ストレージアカウントもメタストアと同じリージョンにすることが推奨となります。
Azure Databricksワークスペースの作成
Azure PortalでDatabricksを検索して、数クリックで作成できます。今回はJapan Westでワークスペースを作成しました。
Unity Catalog用ストレージアカウント、コンテナーの作成
ストレージアカウントとは?
AWSにおけるS3バケットのようなもの。
コンテナーとは?
バケットに作るディレクトリ。
ストレージアカウントの作成
Azure Portalからストレージアカウントにアクセスします。+ 作成 をクリックします。
リソースグループを選択し、ストレージアカウント名を入力します。地域はワークスペースと同じにしましょう。パフォーマンスは性能要件とコスト見合いで選択します。ここではStandardにします。
階層型名前空間の階層型名前空間を有効にするにチェックをつけます。
コンテナーの作成
作成したストレージアカウントにアクセスします。コンテナーをクリックして +コンテナー をクリックします。名前をつけて作成をクリックします。
作成したストレージアカウント、コンテナ、パスを<コンテナ名>@<ストレージアカウント名>.dfs.core.windows.net/<パス>
の形式でメモしておきます。
Unity Catalog用マネージドIDの作成
マネージドIDとは?
サービスプリンシパル(人に紐づかないID)で、Unity Catalogがユーザーに代わってストレージアカウントにアクセスするために使用する。
マネージドIDの作成
Azure Portalの +リソースの作成 をクリックします。
Azure Databricksで検索して表示されるAccess Connector for Azure Databricksを選択します。
名前をつけて、リージョンを選択します。リージョンはストレージアカウント(とDatabricksワークスペース)と同じにします。確認と作成をクリックします。
リソースIDをコピーしておきます。カーソルを移動するとコピーアイコンが表示されます。
マネージドIDにストレージアカウントへのアクセスを許可
ストレージアカウントの作成で作成したストレージアカウントにアクセスします。アクセス制御をクリックし +追加 をクリックしてロールの割り当ての追加を選択します。
ストレージ BLOB データ共同作成者
で検索して選択します。次へをクリックします。
アクセスの割り当て先でマネージドIDを選択し、+メンバーを選択をクリックします。
Azure Databricks 用のアクセス コネクタを選択し、マネージドIDの作成で作成したマネージドIDを選択して選択をクリックします。
マネージドIDにファイルイベントへのアクセス権を付与
マネージドIDにファイルイベントへのアクセスを許可することで、ファイル処理の効率が向上します。
上の手順と同様にマネージドIDにストレージ キュー データ共同作成者
を割り当てます。
ユーザーに代わってAzure Databricksにファイルイベントを構成するアクセス権を付与
リソースグループとは?
名前の通り、Azureのリソースをグルーピングできる機能。リソースグループを削除すると、そこに属するすべてのリソースが削除される。参考記事。
この手順により、Azure Databricksでファイルイベントを自動的に設定できます。
上の手順と同様にマネージドIDにストレージ アカウント共同作成者
を割り当てます。
ストレージアカウントが属するリソースグループにアクセスします。
アクセス制御をクリックし +追加 をクリックしてロールの割り当ての追加を選択します。リソースグループにEventGrid EventSubscription 共同作成者
を割り当てます。
DatabricksアカウントコンソールでのUnity Catalogメタストアの作成
Databricksワークスペースにログインして、画面右上に表示される自分のメールアドレスをクリックして、アカウントを管理をクリックして、アカウントコンソールにアクセスします。
- メタストアに名前を付け、リージョンはストレージアカウントと同じものを指定します。私の場合は
japanwest
となります。 - ADLS Gen 2パスには
<コンテナ名>@<ストレージアカウント名>.dfs.core.windows.net/<パス>
のフォーマットで指定します。私の場合は、uc-container@japanwestucstorage.dfs.core.windows.net/
となります。 - アクセスコネクターIDにはマネージドIDの作成で作成したマネージドIDのリソースIDを指定します。
メタストアをAzure Databricksワークスペースにアタッチ
上の画面ではすでにアタッチするワークスペースが表示されているので、左端のチェックボックスをチェックします。割り当てるをクリックします。
動作確認
上でメタストアをアタッチしたワークスペースにアクセスして、左のメニューからカタログにアクセスします。カタログ一覧にmain
が表示されていることを確認します。これがUnity Catalogのデフォルトのカタログです。
左のメニューからクラスターを選択し、Personal Computeで作成をクリックします。
コンピューティングを作成をクリックします。これで、Unity Catalog対応のクラスターが作成されます。
SQLノートブックを作成し、上記クラスターにアタッチして以下のコマンドを実行します。
SHOW CATALOGS;
以下のコマンドを実行してスキーマ(データベース)を作成します。
USE CATALOG main;
CREATE SCHEMA uc_test;
以上で終了です。お疲れ様でした!