1. はじめに

皆さんこんにちは。

Data and AI Summit 2023において、Databricks Unity CatalogのVolumes(以下、ボリューム)機能が紹介されましたが、この機能についてご存知でしょうか?

ボリュームはUnity Catalog内で画像や音楽などの非構造化データの探索、管理、処理、追跡が可能になります。

本ブログでは、ボリュームの使用方法と一般的なユースケースについて説明します。

2. Databricks Unity Catalogのボリュームとはなんですか?

ボリュームとは、Unity Catalog内のディレクトリとファイルを整理するための新しいカタログアイテムです。

クラウドストレージ内のデータ(構造化データ、半構造化データ、非構造化データ)にアクセスし、それらを管理できます。

ボリュームにはマネージドボリュームと外部ボリュームがあります。

  • マネージドボリュームは、スキーマを格納するデフォルトストレージロケーションに作成されるストレージボリュームです。
  • 外部ボリュームは、外部ロケーションとして登録したストレージのディレクトリに作成されるストレージボリュームです。

※マネージドボリュームに関する重要な注意事項:
マネージドボリュームを削除する(「DROP VOLUME」実行)と、グラウンドストレージアカウント内に保存されているすべてのファイルも削除対象となります。これらのファイルは、システムによって30日後に完全に削除され、復元できなくなるため注意が必要です。

3. Databricks Unity Catalogのボリュームを使用するための事前条件

「ボリューム」はUnity Catalog内の重要な構成要素であり、これを使用するにはワークスペースにUnity Catalogを有効にする必要があります。

※Unity Catalogは、2023年11月9日以降に作成されたすべてのAzure Databricks Workspaceにおいて、自動的に有効化されています。

4. マネージドボリュームの作成手順

DatabricksのワークスペースのUIを使用し、マネージドボリュームを作成し、PDFファイルをアップロードしてみましょう。

4.1. マネージドボリュームの作成

メニューバーから「カタログ」を選択し、対象のカタログ、そしてスキーマをクリックします。

スキーマ画面の右側で、「作成」をクリックし、「ボリューム」を選択します。

ボリュームの作成画面にアクセスしたら、ボリューム名とボリュームのタイプを指定します。「管理ボリューム」を選択してください。

4.2. マネージドボリュームへのPDFファイルのアップロード

作成したマネージドボリュームの画面の右側にある、「このボリュームにアップロード」を選択します。

その後、アップロードしたいファイルをポップアップ画面にドラッグします。

ボリュームにはPDF、DOC、画像などの非構造化データもアップロードすることが可能です。

4.3. 権限付与

マネージドボリュームの画面で、「権限」タブを選択することで、どのユーザーやグループがどの権限を持つかを設定できます。

「付与」を選択して必要な権限を追加します。

5. 外部ボリュームの作成

DatabricksのワークスペースのUIを使用して、外部ボリュームを作成し、Azureのストレージアカウントに保存されたPDFファイルをアップロードしてみましょう。

5.1. アクセスコネクタの作成

Databricksは、外部ボリュームを外部テーブルのように管理し、Azure、AWS、GCPなどのDatabricks以外のデータソースからデータをマウントできます。

外部データソースを使用する場合、Databricksへの接続にはコネクタが必要です。Azureでは、公開されているDatabricksコネクタが提供されているため、このブログではそれを使用します。

Azureポータルにて、対象のDatabricksアクセスコネクタを選択します。

続けて、リソースIDのコピーアイコンをクリックして情報をコピーします。

5.2. ストレージアカウントへのアクセス権の付与

コネクタを作成しましたが、このコネクタはまだストレージアカウントへのアクセス権を持っていません。

したがって、ストレージアカウントの設定画面で、「ストレージBLOBデータの共同作成者」権限をDatabricksコネクタに付与します。

1. 「アクセス制御 (IAM)」にて、「+追加」を選択、「ロールの割り当ての追加」をクリックします。

2. 「ストレージBLOBデータの共同作成者」という権限を検索し、「次へ」をクリックします。

3. 「マネージド ID」を選択し、「すべてのシステム割り当てマネージド ID (39)」を選択します。

続けて、前のステップでコピーしたaste リソースIDを貼り付け、「選択」ボタンをクリックし、また「次へ」をクリックします。

最後に、「レビューと割り当て」を選択すると、権限の付与が完了します。

5.3. ストレージの認証情報の作成

次に、Databricksに移動して、Unity Catalog内でコネクタのリソースIDを追加します。

  • : をチェックする。
  • 資格情報名: ストレージの認証情報の名前を設定する。
  • アクセスコネクターID: 先ほどコピーしたリソースID

「作成」をクリックすると、資格情報が作成されます。作成後は、対象の画面から確認することができます。

作成したストレージ資格情報がこの画像のように表示されます。

5.4. Unity Catalog外部ロケーションの作成

コネクターは設定済みですが、Databricksはどのデータを読み込むかまだ指定されていません。

今から外部ロケーションを作成し、ストレージアカウントのファイルパスを追加します。

1. 「カタログ」画面にて、「接続」を選択し、「外部ロケーション」をクリックします。

2. 「外部データ」画面にて、「外部ロケーションを作成」を選択します。

  • 外部ロケーション名: 外部ロケーションの名前を設定する。
  • URL: ファイルパスを以下の形式で入力します。「abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>」
  • ストレージ資格情報: 先ほど作成したストレージの認証情報名を選択する。

「作成」をクリックすると、外部ロケーションが作成されます。

5.5. 外部ボリュームの作成

5.4まで、問題なく設定が完了したら、Databricksはストレージアカウントのデータを読み込むようになるため、外部ボリュームを作成してみましょう。

マネージドボリュームの作成方法と同様に、対象のカタログとスキーマで「ボリューム」をクリックします。

今回は、「外部ボリューム」を選択します。 そして、先ほど作成した外部ロケーションは「外部ロケーション」に表示されるので、この外部ロケーションを選択します。

選択した後、自動的にパスが挿入されますので、ストレージアカウントのパスが正しいことを確認してください。

そして、「作成」をクリックして、外部ボリュームを作成し、ストレージアカウントのデータが自動的に読み込まれて表示されます。

6. ノートブックでボリュームのデータ読み込み実施

ノートブックで、ボリュームは普通のフォルダのように管理されます。

以下のPythonスクリプトを使用すると、ボリューム内のファイルパスがあれば、ファイルをロードできます。

ノートブックに非構造化データをロードした後、その非構造化データを活用するさまざまな方法があります。Databricksを使用すると、非構造化データを活用して機械学習モデルのトレーニングやデータ分析などを行うことができます。

活用方法についてもブログ掲載していく予定です。是非ご覧ください!

7. まとめ

本記事ではDatabricksのUnity Catalogのマネージドボリューム及び外部ボリュームの使用方法とPDFファイル(非構造化データ)を読み込み、Databricksのノートブックで表示する方法について説明しました。

今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。

双日テックイノベーションでは、Azure Databricksの環境構築パッケージを用意しています。

Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!

Azure Databricks連載記事のまとめはこちら
お問い合わせはこちら


この記事を読んだ方へのオススメコンテンツはこちら


この記事を書いた人

ファン コック トゥアン