Azure Databricks における Unity Catalog 設定ガイド

みなさん、こんにちは！

Azure Databricks でワークスペースを作成した際、最初の段階で Unity Catalog が設定されておらず、手動で作成しなければならない場合があります。
本記事ではそうした場合に一から Unity Catalog の設定を行う方法についてご紹介します。

## 設定手順
Unity Catalog が作成されていない場合、以下のように「Delta Shares Received」と「レガシー」のみ表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/09461ca4-f67d-4e60-9d50-a8eed5813063.png)

ワークスペース作成後、手動で Unity Catalog を有効にするための手順は以下の通りとなります。
 **1,ADLS Gen2 Storageアカウントとコンテナを作成する。**
 **2,アクセスコネクタを作成する。**
 **3,アクセスコネクタに、ADLS Gen2 Storageアカウントに対する Storage Blob Data Contributor 権限を付与する。**
 **4,メタストアを作成し、ワークスペースに割り当てることで Unity Catalog を有効化する。**
※Unity Catalog メタストアはリージョン依存なので、リソースはすべて同じリージョン内に作成する必要があります。

### 0. 事前準備
Unity Catalog 設定にあたり、以下の準備をしておきます。

 * Premium 以上のプランであることを確認（Unity Catalog を利用するためには Premium プランである必要があるため）。
 * Azure でグローバル管理者権限が付与されていることを確認（グローバル管理者権限がないと Databricks のアカウントコンソールを開けないため）。

### 1. ストレージアカウント作成
ホーム画面から「ストレージアカウント」に移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/4235e086-1854-4d74-9b4e-73748045f16d.png)

各項目を設定します。リソースグループとリージョンはワークスペースと同じものを設定し、プライマリサービスは「Azure Blob Storage または Azure Data Lake Storage Gen2」を選択します。
※検証目的のため、パフォーマンスと冗長性はコストを抑えたものを選択しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/8322016a-3b5d-44e9-8bd3-c02d4ad89b2d.png)

「詳細」タブで「階層型名前空間を有効にする」にチェックを入れておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/336087e5-166e-40bf-b5fb-448b15358a85.png)

他はデフォルトのままで「レビューと作成」を開き、「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/f61b41f0-ca64-4e09-aecb-fac2005a2842.png)
デプロイが完了しました。

次に「リソースに移動」をクリックし、「データストレージ」→「コンテナ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/be9a4f79-df4e-4dc7-9bbf-3570114cfe90.png)

「＋コンテナ」ボタンをクリックし、新しいコンテナを適当な名前で作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/c14cf8a3-bc75-4b34-b71a-334c7765e412.png)
新しいコンテナが作成されました。

### 2. アクセスコネクタ作成
「Azure Databricks 用のアクセス コネクタ」を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/9fbcac39-fcde-4489-93b7-e9dddce4a5c2.png)

「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/c0e184ba-2473-4e19-95ed-607fe31ab6df.png)

ワークスペースと同じリソースグループ、リージョンを指定して「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/98d2c184-83e5-4b11-a68e-6705a71cb990.png)
デプロイが完了しました。

### 3. 権限付与
「ストレージアカウント」→「アクセス制御（IAM）」で「ロールの割り当ての追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/bb47f3cb-d8f6-401d-80d2-9632b065ad57.png)

「ストレージ BLOB データ共同作成者」をクリックし、次に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/ed907c41-4460-40fd-b7fd-33ef9ae34a3f.png)

「アクセスの割り当て先」で「マネージドID」にチェックを入れ、先ほど作成したアクセスコネクタを選択します。
「レビューと割り当て」をクリックし、変更を確定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/5b7d6b7a-ba83-4771-8fcb-ecfc43155ff6.png)
ロールが割り当てられたことを確認します。

### 4. Unity Catalog 有効化
[アカウントコンソール](https://accounts.azuredatabricks.net/)にアクセスします。
※執筆時点でワークスペースから直接アカウントコンソールを開くことはできないため、上記リンクからアクセスする必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/477d2110-ed30-4153-992e-e7228eac817d.png)

「カタログ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/49c29f1b-2a4c-4d05-80b8-c0b88b7fb215.png)

「メタストアを作成する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/5a1d2a7e-a4f6-4417-a907-683dbff1a333.png)

各項目を以下のように設定します。
 * 名前：任意の名前
 * リージョン：リソースグループと同じリージョン
 * ADLS Gen 2パス：Unity Catalog 用のストレージコンテナを指定します。書式は例と同様に記載します（<container_name>@<storage_account_name>.dfs.core.windows.net/<path>）。
* アクセスコネクターID：「2. アクセスコネクタ作成」で作成したアクセスコネクタのリソースIDを指定します。

設定が完了したら「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/0507790f-da3b-4cc9-a323-a2eccbcba92a.png)
対象のワークスペースを選択し、「割り当てる」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/4db83e1f-ed2f-44e7-a165-ab8e6e373602.png)
確認のポップアップが出てきたら「有効化」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/051e0349-44f7-478c-8d6f-7cb224c99f03.png)
以上で設定完了です！お疲れ様でした。

## 確認
ワークスペースのページを更新し、実際に新しいカタログが追加されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/3ed8a0a6-92b5-4f87-9def-e2ac7b64cf1e.png)

「カタログ」を開くと、「Delta Shares Received」の上に「自組織」という新しいカタログが追加されていることが確認できます。これが今回新しく作成した Unity Catalog です。
※Unity Catalog 有効化後も既存の Hive メタストアは保持されます。

## 最後に
Unity Catalog を一から手動で設定する方法についてご紹介しました。
Databricks ではデフォルトで設定されている Hive メタストアだけでも通常のデータ処理等は問題なく行えますが、権限管理機能や機械学習モデル登録など Unity Catalog を有効化しないと利用できない機能もあるため、Premium プランをご利用の場合は設定しておくことをおすすめします。