Azure Databricks への Data Lake Storage Gen 2 マウント方法 (2019年12月時点)

## はじめに
Azure Databricks に Azure Data Lake Storage Gen 2 をマウントする手順をまとめました。
(2019年12月時点)

## 手順
#### Azure Data Lake Storage Gen 2 設定
コンソールで Azure Active Directory を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/e1e8340b-5475-4106-4765-9532b36c65c2.png)

アプリの登録で、新規登録を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/162acd0c-08ad-11b6-8ba2-1ecea2ee584e.png)

名前は任意で設定し、サポートされるアカウントはシングルテナントを選択、リダイレクトURIに以下を入力し、登録をクリック
```https://japaneast.azuredatabricks.net/```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/dfc8ab65-e543-7075-2c7f-62ded31cea08.png)

**アプリケーションID** と **ディレクトリID** をメモしておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/d927b55b-4a89-8637-46d5-89a57d0a038a.png)

証明書とシークレットから、新しいクライアントシークレットへと進み、説明を任意で入力し、追加をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/e4939844-745e-7357-258b-cffd9b141c2f.png)

**クライアントシークレット** をメモしておきます。(一度しか表示されないので注意)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/f3ff671a-f1bb-4700-7ecb-0d38e1f7ccc4.png)

コンソールでストレージアカウントを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/eac7c86f-c48b-63c5-4e29-2d884179b5b1.png)

アカウントの追加を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/ec48ba8f-f79e-b966-23e4-8da26ed67c76.png)

詳細タブで、Data Lake Storage Gen2 の階層構造の名前空間を有効化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/d30378ae-bf11-1713-6654-e1da56b9a9de.png)

基本タブで、Azure Databricks と同じリソースグループを選択、ストレージアカウント名を任意で設定し、確認及び作成をクリック。**ストレージアカウント名**をメモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/193867be-a4ab-eb6e-6c0b-a6eb053f06fd.png)

階層構造の名前空間 が有効化されていることを確認し、作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/9e253bb5-cb9a-7b44-aefc-9c41e36ba67e.png)

しばらくするとデプロイが完了するので、リソースに移動をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/7982cbe2-4e2b-3fd3-6297-bdde3d1f5f22.png)

ファイルシステムを作成するために、コンテナを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/f1cb0cd4-fcd7-b711-69ad-114f6c97b5d8.png)

ファイルシステム名を任意で入力し、OKをクリック。**ファイルシステム名**をメモしておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/e9adfd94-84df-fbee-afc7-fcefa2aabeff.png)

作成したコンテナを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/9f807165-932a-1c8f-5d83-ded64c589be6.png)

アクセス制御タブで、ロールの割り当ての追加を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/232aba59-9132-67e5-00a9-1a75e56a32ba.png)

役割をストレージ BLOB データ共同作業者に変更、選択で先ほど作成したストレージアカウント名を選択、保存をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/f4ef4f35-5ad9-9793-7f65-ab238bbf1196.png)

ロールの割り当てで、作成したロールが追加されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/29097a07-28eb-8d6b-93cb-a3db8e882604.png)

以上で Data Lake Storage Gen 2 の設定は完了です。以下の情報がメモされていることを確認し、保存しておきましょう。Azure Databricks の Notebook で Gen2 をマウントする際に使用します。

- アプリケーションID
- ディレクトリID
- クライアントシークレット
- ストレージアカウント名
- ファイルシステム名

#### Azure Storage Explorer でデータのアップロード 
Azure Data Factory でデータ取り込みのフローを作成できます。@ume67026265 さんの記事が参考になります。
[Azure Data Lake Storage Gen2 使ってみた](https://qiita.com/ume67026265/items/85a629fc9827e873c34b)

手元のデータを手早く取り込みたい際には、[Azure Storage Explorer](https://azure.microsoft.com/ja-jp/features/storage-explorer/) を用いると便利。
以下のような UI で直感的にデータをアップロードできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/979218df-3e99-3ce9-f4e4-731c8834cdeb.png)



#### Azure Databricks でマウント
@KcMichael さんの記事のスクリプトが便利です。使わせてもらいましょう。
[Azure Databricks: 3-2. DBFSにAzure Data Lake Storage Gen2をマウント](https://qiita.com/KcMichael/items/98493d2e9bb3eb3f12db)

## さいごに
Blob に比べると手順が多いので、UI の変更があると少し戸惑いますね。今後も Azure Databricks に関する Tips をお届けします！

## 参考リンク
[Azure Databricks: 3-2. DBFSにAzure Data Lake Storage Gen2をマウント](https://qiita.com/KcMichael/items/98493d2e9bb3eb3f12db)
[Azure Data Lake Storage Gen2 使ってみた](https://qiita.com/ume67026265/items/85a629fc9827e873c34b)