👏

Databricks Unity Catalogの外部ボリュームでAWS S3上のファイルを管理する手順

に公開

1. 事前準備

  • AWS側でS3バケットが作成済みであることが必要です。(今回は例として s3://hello-data-ai-fan/ を使用)
  • Databricksから上記S3バケットへアクセスするためのストレージ認証情報および外部ロケーションが設定済みであること。

2. 目的

Databricksプラットフォームを利用して、外部クラウドストレージ(AWS S3)に格納されたファイル(CSV、JSON、画像など)を管理するための一連のプロセスを試し、その手順を確認することを目的とします。
具体的には、以下の項目を試しました。

  • 外部ロケーションを指定した新しいカタログの作成。
  • 作成したカタログ内への新しいスキーマの作成。
  • スキーマ内への外部ボリュームの作成とS3パスへのマッピング。
  • S3バケットにアップロードしたファイルが、Databricksの外部ボリューム経由で直接参照できることの確認。

3. 実行環境

  • プラットフォーム: Databricks Free Edition
  • 外部ストレージ: AWS S3

4. 試してみた

ステップ1: 新しいカタログを作成する

まず、Unity Catalogでデータを管理するための最上位の階層である「カタログ」を作成しました。今回は、データを外部のS3ロケーションに保存するように設定します。

実行手順の概要:

  1. Databricksワークスペースの左側サイドバーにある「カタログ」をクリックします。
  2. データエクスプローラー画面の上部にある「+ データ」ボタン(動画では + アイコンのボタン)をクリックし、「カタログを作成」を選択します。
  3. 新規カタログを作成」ダイアログで、以下のように設定します。
    • カタログ名: hello
    • ストレージの場所: 「デフォルトのストレージを使用」のチェックを外し、「外部ロケーションを選択」で事前に設定済みの外部ロケーションを選択します。
  4. 作成」ボタンをクリックします。

ステップ2: 新しいスキーマを作成する

次に、作成したカタログの中に、テーブルやボリュームを整理するための「スキーマ」(データベースに相当)を作成しました。

実行手順の概要:

  1. ステップ1で作成した hello カタログを選択します。
  2. 画面右上の「スキーマを作成」ボタンをクリックします。
  3. 新規スキーマを作成する」ダイアログで、スキーマ名dataaifan と入力します。
  4. 作成」ボタンをクリックします。

ステップ3: 外部ボリュームを作成する

スキーマ内に、非構造化データを格納・管理するための「外部ボリューム」を作成しました。このボリュームは、外部のS3パスに直接マッピングされます。

実行手順の概要:

  1. ステップ2で作成した dataaifan スキーマを選択します。
  2. 画面右上の「作成」ボタンをクリックし、「ボリュームを作成」を選択します。
  3. 新規ボリュームを作成する」ダイアログで、以下のように設定します。
    • ボリューム名: ext
    • ボリュームタイプとして「外部ボリューム」を選択します。
    • 外部ロケーション: ステップ1と同じ外部ロケーションを選択します。
    • パス: ボリューム用に新しいサブディレクトリ名 raw を追記します。このサブディレクトリは事前にS3で作成しておく必要はなく、Databricksが自動で生成します。
  4. 作成」ボタンをクリックします。

ステップ4: S3ファイルをボリューム経由で確認する

作成した外部ボリュームがS3バケットと正しく連携しているかを確認しました。

実行手順の概要:

  1. AWS S3コンソールに移動し、ステップ3で指定したバケットとパス(Databricksが自動生成した raw フォルダ)に、任意のファイル(動画では transactions.csv)をアップロードします。
  2. Databricksのワークスペースに戻り、作成した外部ボリューム ext の画面を開き、「ファイル」タブをクリックします。
  3. 画面を更新(リフレッシュボタンをクリック)します。
  4. S3にアップロードした transactions.csv ファイルが、ボリューム内のファイル一覧に表示されることを確認しました。

5. 最後に

今回試した一連のプロセスを通じて、DatabricksとS3を連携させたデータ管理の基本的なフローを実践することができました。

  • Unity Catalogの3層構造(カタログ > スキーマ > オブジェクト)により、論理的で整理されたデータ管理が可能です。
  • 外部ボリューム機能を使えば、S3バケット内の非構造化データをDatabricksのUIから直接参照・操作でき、データパイプラインの構築やファイルベースの分析が非常にスムーズになります。
  • この仕組みにより、既存のデータレイク資産をそのまま活用しながら、Unity Catalogが提供する統一されたガバナンス(アクセス制御、監査ログなど)の恩恵を受けることができます。これは、セキュアでスケーラブルなデータプラットフォームを構築する上で非常に強力な機能です。

6. 参考資料

  1. Databricksの外部ロケーション(External Location)を設定する手順
  2. Databricksのカタログと外部ボリュームを作成

Discussion