FabricとDatabricksの相互運用性 2：FabricとDatabricksをハブストレージ（Delta Lake）で接続する設定手順

:::note info
この記事は以下の記事の補足記事となります。

[【総集編】Microsoft Fabric と Databricksをつなぐデータ総合運用術 -hubストレージにDelta Lake形式で保管する-](https://qiita.com/ReijiOtake/items/f134ae040a63576732ad)

:::


:::note info
YouTubeのアーカイブでも、9分45秒~あたりからこの記事についての概要を解説しています。

https://youtu.be/A9aIcowJn1I?si=VmNqZjycimJnN86E&t=585


:::

# はじめに

今回は
+ **Databricks で作成したテーブルをFabric で利用する**
+ **Fabric で作成したテーブルをDatabricksで利用する**
というユースケースを実施するための**設定方法**について具体的に紹介します。



# habとなるAzure Data Lake Gen2（ASLS2）を用意する
### ①Azureポータルからhubとなるストレージアカウントをデプロイ

:::note warn
階層構造の名前は有効にしてください
:::

### ②'hub'というコンテナを作成した後、'ext'というディレクトリを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/054ed6fa-e100-353a-a206-a5a2e8e6b0bb.png)

# Fabricとhubストレージを連携させる
### ①レイクハウスを作成

:::note warn
Lakehouseスキーマ(パブリックプレビュー)は有効にしてください
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/dcbf27b0-c49e-bef6-9f44-7712e47987ef.png)

### ②レイクハウスの新しいスキーマショートカットでhubストレージを指定する
レイクハウスの[Tables]の３点リーダーから[新しいスキーマショートカット]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/39c6a252-3bd0-3ec9-d476-4f2417588ce5.png)

[Azure Data Lake Gen2]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/1e846d08-67a7-7383-1af7-92ef20567ce3.png)

新しい接続の作成を入力する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/f432a6dc-6c49-ac22-170c-0ba3db53abbc.png)

:::note info
ADLS2アクセスURLの確認方法
ストレージアカウントの [エンドポイント] の'Data Lake Storage'から確認可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/4c9be0cb-eadc-1776-2e68-79d69f2960ba.png)
:::

'ext'ディレクトリを有効化し、[次へ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/29e14918-9a75-2b2a-3874-c67aceb11041.png)

[作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/155dee8b-c704-5dc4-7e95-0c52da4cb3c8.png)

'ext'が外部スキーマショートカットとして作成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/131a37ae-1738-80a8-f4e7-d6d1bccd1aeb.png)


# Databricksとhubストレージを連携させる
### ①AzureポータルからAzure Databricks用のアクセスコネクタを作成する
[Unity Catalog で Azure マネージド ID を使用してストレージにアクセスする](
https://learn.microsoft.com/ja-jp/azure/databricks/data-governance/unity-catalog/azure-managed-identities#config-managed-id)の
「ステップ 1: Azure Databricks 用のアクセス コネクタを作成する」の「システム割り当てマネージド ID を使用する」の手順を実施する

### ②Azureポータルからコネクタにhubストレージへのアクセスを許可する
[Unity Catalog で Azure マネージド ID を使用してストレージにアクセスする](
https://learn.microsoft.com/ja-jp/azure/databricks/data-governance/unity-catalog/azure-managed-identities#config-managed-id)の「ステップ 2：マネージド ID にストレージ アカウントへのアクセスを許可する」の手順を実施する

### ③Databricksから資格情報を作成する
Databricksにログインし、[カタログ] > [＋] > [資格情報を追加する]の順にクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/56ecc2ed-2ba2-cad9-40fd-57e00e83950f.png)

新規のストレージ資格情報を追加する
|  | 入力値 |
|:-:|:-:|
|ストレージ資格情報 or サービス資格情報|ストレージ資格情報|
|資格情報名|任意の名前|
|アクセスコネクターID|①で作成したコネクタのリソースID（Azureポータルから確認可能）|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/5266b4f5-1c98-d5a3-19e8-ce75da1b7b24.png)


作成後、作成した資格情報名をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/75ecb6bc-1181-963d-0fa4-ad0d6b904168.png)

[権限] > [付与]の順にクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/a06f5f4c-ebc0-4ce5-9f57-923cde39e693.png)

必要なユーザーに[ALL PRIVILEGES]を付与する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/de241189-97a4-1339-9b9d-bd3b324cafd0.png)

:::note info
手順や必要な権限の参考
[Azure Data Lake Storage Gen2 に接続するためのストレージ資格情報を作成する](https://learn.microsoft.com/ja-jp/azure/databricks/connect/unity-catalog/cloud-storage/storage-credentials#next-steps)
:::

### ④Databricksから外部ロケーションを追加する
Databricksにログインし、[カタログ] > [＋] > [外部ロケーションを追加]の順にクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/876a6e55-edbf-36b5-857d-47ca0313d7f7.png)

新しい外部ロケーションを作成する
|  | 入力値 |
|:-:|:-:|
|外部ロケーション名|任意の名前|
|URL|abfss://ディレクトリ名（今回はhub）@ストレージアカウント名.dfs.windows.net|
|ストレージ資格情報|③で作成した資格情報を選択|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/23742610-eb72-1e33-838e-bf46d80e6395.png)

:::note info
URLの入力値について
本記事「Fabricとhubストレージを連携させる」の②で使用したストレージアカウントの [エンドポイント] と同様
:::



:::note info
手順や必要な権限の参考
[クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する](https://learn.microsoft.com/ja-jp/azure/databricks/connect/unity-catalog/cloud-storage/external-locations)
:::

作成後、作成した外部ロケーション名をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/b60ab902-ecc6-9341-0864-8f81ea30777f.png)


[権限] > [付与]の順にクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/a83645c3-56f1-71c7-c184-e079ddbaebfb.png)


必要なユーザーに[ALL PRIVILEGES]を付与する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/55153289-b9c2-ff66-c48b-18352c490adc.png)

### ⑤Databricksからカタログ、スキーマを新規作成
Databricksにログインし、[カタログ] > [＋] > [外部ロケーションを追加]の順にクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/00d6365c-e794-99b4-b5ee-a0b11f372958.png)

新規カタログを作成する
||入力値|
|:-:|:-:|
|カタログ名|任意の名前|
|タイプ|Standard|
|ストレージの場所|④で作成した外部ロケーションを選択|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/03eb71a5-a68a-d736-b0fb-181c48c2789c.png)

作成したカタログにスキーマを作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/f76db00d-db9a-733c-177b-c6ae43b419f4.png)

新規スキーマを作成する
||入力値|
|:-:|:-:|
|スキーマ名|任意の名前|
|ストレージの場所|空欄|

:::note info
カタログやスキーマのストレージの場所
スキーマのストレージの場所を空欄にするとカタログで指定したストレージが設定されます。Unity Catalogのマネージドストレージの仕組みについては下記を参照ください。
[Unity Catalog のマネージド ストレージの場所を指定する](https://learn.microsoft.com/ja-jp/azure/databricks/connect/unity-catalog/cloud-storage/managed-storage)
:::


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/ba0a23cb-ac2d-8a49-890b-7927f755d127.png)



# おわりに

これで準備は整いました。
次から実際にテーブルの相互互換性を実施しましょう！

▽次の記事

https://qiita.com/ReijiOtake/items/86b44b2c30986c65db08

▽前の記事

https://qiita.com/ReijiOtake/items/48c7b1e54796f4f569f3