DatabricksからGlueのIcebergテーブルを読み込んでみた

## 前提
・利用環境：Databricks

https://www.databricks.com/jp/try-databricks?scid=7018Y000001Fi15QAC&utm_medium=paid+search&utm_source=google&utm_campaign=17377047998&utm_adgroup=138148229998&utm_content=trial&utm_offer=try-databricks&utm_ad=732035937815&utm_term=databricks%20%E3%83%88%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%AB&gad_source=1&gclid=CjwKCAiA8Lu9BhA8EiwAag16b8b3zbkIb3V7gp-8VUwKukXnhtVZRQ-1RY8SbETmGVgNT4bQramYmRoCX5wQAvD_BwE#account

## 手順
動画再生リスト
<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?si=U4J9azU3gmGgau1w&amp;list=PLTEwxHX49eLfLZL9oUHTlRRQgHviATx0H" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### 1.S3バケットを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/cfd8b7ba-ab9d-4f60-bf7b-c299d974c5ab.png)

<iframe width="560" height="315" src="https://www.youtube.com/embed/gIfctP4fel8?si=1Uf_hp2rC9zUa05h" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### 2.AWS GlueでDatabaseを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/fbb1c8f1-63e2-422d-8ae6-77a49cc097ea.png)
### 3.AWS AthenaでIcebergテーブルを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/e3369dcd-4b04-4eca-9550-83290cbf13c2.png)

### 4.外部ロケーションを作成
https://docs.databricks.com/aws/ja/connect/unity-catalog/cloud-storage/external-locations

<iframe width="560" height="315" src="https://www.youtube.com/embed/S2zcDqD4MPE?si=69xX2HiIIP1QIqb6" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

1)「カタログ」→「外部データ」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/8f6f9462-d621-4fda-9f80-c589ef6b9c2e.png)
2)「外部ロケーションを作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/3222afea-e3ab-4c46-a6ad-c7355c6bd214.png)
3)「AWSクイックスタート」→「次のページ」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/ef91b97e-5a9f-41b1-9919-2eb997b8ef85.png)
4)S3のパケット名を入力し、「新規トークンを生成」をクリック
例：
パケット名：s3://ho-iceberg（親パケット）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/aef4d57a-f461-46f7-bdff-0f962d30db77.png)
5)表示されるトークンをコピーし、「クイックスタートで開始」をクリック
6)遷移されたAWSのスタックのクイック作成画面のDatabricks Personal Access Token欄にコピーしたトークンを貼り付ける
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/f2591554-87e6-4719-91d8-1b9d3c0d5a6d.png)
7)スタック名を適宜変更し、最後の以下をチェックし、「スタックの作成」をクリック
☑︎AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/1125f46c-a143-4b15-adb8-873b9df4c970.png)
8)Statusが「Create_Complete」になったら、Databricksの外部ロケーション一覧にも反映されてることを確認できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/14106475-c94e-4769-9056-4701f21a0b66.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/6e397025-edf2-4304-ab1b-41e89cfb21bb.png)
9)外部ロケーションの詳細画面に入り、「接続テスト」をクリックし、成功できるか確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/24093ec5-42fe-4e4d-8ae7-04a1dfd245c3.png)
10)「権限」→「付与」をクリックし、対象ユーザー、グループに必要な権限を付与
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/46e3c4fb-de6f-4a5c-9a4b-bde476643e60.png)
### 5.GlueとのFederation接続を作成
<iframe width="560" height="315" src="https://www.youtube.com/embed/qGXwrjk_KSM?si=43nXdlUgKRWaecDb" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/zX0UeP1YQrI?si=3-6iuv5uPAuncqgZ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/by5Dl_vi0Gg?si=hSUCvz6xc_nTEGYP" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

1)「カタログ」→「外部データ」→「接続」→「接続を作成」をクリックし、上のDemo動画を参考に上に作成した外部ロケーションと資格情報を設定して、接続を作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/502c2bf2-6ca8-4815-9c8f-e18f5b3f19a7.png)

2)設定が成功すると、カタログをクリックし、テーブルの詳細を確認。GlueのIcebergデータソースが取得されてることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/29817942-cfde-4036-a778-f05a0e5e3507.png)
### 6.Notebookからdataframeを作ってみる
```
df = spark.table("gluetest_catalog.icebergtest_schema.aws_iceberg_table1")
display(df)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/6546cc05-2cb8-4d75-8365-36ed82b66a22.png)
以上