👏
Databricks Unity Catalogの外部ボリュームでAWS S3上のファイルを管理する手順
1. 事前準備
- AWS側でS3バケットが作成済みであることが必要です。(今回は例として
s3://hello-data-ai-fan/を使用) - Databricksから上記S3バケットへアクセスするためのストレージ認証情報および外部ロケーションが設定済みであること。
- 設定手順については、こちらの記事を参考にしてください: Databricksの外部ロケーション(External Location)を設定する手順
2. 目的
Databricksプラットフォームを利用して、外部クラウドストレージ(AWS S3)に格納されたファイル(CSV、JSON、画像など)を管理するための一連のプロセスを試し、その手順を確認することを目的とします。
具体的には、以下の項目を試しました。
- 外部ロケーションを指定した新しいカタログの作成。
- 作成したカタログ内への新しいスキーマの作成。
- スキーマ内への外部ボリュームの作成とS3パスへのマッピング。
- S3バケットにアップロードしたファイルが、Databricksの外部ボリューム経由で直接参照できることの確認。
3. 実行環境
- プラットフォーム: Databricks Free Edition
- 外部ストレージ: AWS S3
4. 試してみた
ステップ1: 新しいカタログを作成する
まず、Unity Catalogでデータを管理するための最上位の階層である「カタログ」を作成しました。今回は、データを外部のS3ロケーションに保存するように設定します。
実行手順の概要:
- Databricksワークスペースの左側サイドバーにある「カタログ」をクリックします。
- データエクスプローラー画面の上部にある「+ データ」ボタン(動画では
+アイコンのボタン)をクリックし、「カタログを作成」を選択します。 - 「新規カタログを作成」ダイアログで、以下のように設定します。
-
カタログ名:
hello - ストレージの場所: 「デフォルトのストレージを使用」のチェックを外し、「外部ロケーションを選択」で事前に設定済みの外部ロケーションを選択します。
-
カタログ名:
- 「作成」ボタンをクリックします。
ステップ2: 新しいスキーマを作成する
次に、作成したカタログの中に、テーブルやボリュームを整理するための「スキーマ」(データベースに相当)を作成しました。
実行手順の概要:
- ステップ1で作成した
helloカタログを選択します。 - 画面右上の「スキーマを作成」ボタンをクリックします。
- 「新規スキーマを作成する」ダイアログで、スキーマ名に
dataaifanと入力します。 - 「作成」ボタンをクリックします。
ステップ3: 外部ボリュームを作成する
スキーマ内に、非構造化データを格納・管理するための「外部ボリューム」を作成しました。このボリュームは、外部のS3パスに直接マッピングされます。
実行手順の概要:
- ステップ2で作成した
dataaifanスキーマを選択します。 - 画面右上の「作成」ボタンをクリックし、「ボリュームを作成」を選択します。
- 「新規ボリュームを作成する」ダイアログで、以下のように設定します。
-
ボリューム名:
ext - ボリュームタイプとして「外部ボリューム」を選択します。
- 外部ロケーション: ステップ1と同じ外部ロケーションを選択します。
-
パス: ボリューム用に新しいサブディレクトリ名
rawを追記します。このサブディレクトリは事前にS3で作成しておく必要はなく、Databricksが自動で生成します。
-
ボリューム名:
- 「作成」ボタンをクリックします。
ステップ4: S3ファイルをボリューム経由で確認する
作成した外部ボリュームがS3バケットと正しく連携しているかを確認しました。
実行手順の概要:
- AWS S3コンソールに移動し、ステップ3で指定したバケットとパス(Databricksが自動生成した
rawフォルダ)に、任意のファイル(動画ではtransactions.csv)をアップロードします。 - Databricksのワークスペースに戻り、作成した外部ボリューム
extの画面を開き、「ファイル」タブをクリックします。 - 画面を更新(リフレッシュボタンをクリック)します。
- S3にアップロードした
transactions.csvファイルが、ボリューム内のファイル一覧に表示されることを確認しました。
5. 最後に
今回試した一連のプロセスを通じて、DatabricksとS3を連携させたデータ管理の基本的なフローを実践することができました。
- Unity Catalogの3層構造(カタログ > スキーマ > オブジェクト)により、論理的で整理されたデータ管理が可能です。
- 外部ボリューム機能を使えば、S3バケット内の非構造化データをDatabricksのUIから直接参照・操作でき、データパイプラインの構築やファイルベースの分析が非常にスムーズになります。
- この仕組みにより、既存のデータレイク資産をそのまま活用しながら、Unity Catalogが提供する統一されたガバナンス(アクセス制御、監査ログなど)の恩恵を受けることができます。これは、セキュアでスケーラブルなデータプラットフォームを構築する上で非常に強力な機能です。
Discussion