ボリュームは、表形式ではないデータセットのガバナンスを有効にする Unity Catalog オブジェクトです。 ボリュームにより、クラウド オブジェクトの保存場所にあるストレージの論理ボリュームが示されます。 ボリュームにより、ファイルのアクセス、格納、管理、整理を行うための機能が提供されます。
テーブルにより、表形式データセットに対するガバナンスが提供される一方、ボリュームにより、表形式以外のデータセットに対するガバナンスが追加されます。 ボリュームを使うと、構造化データ、半構造化データ、非構造化データなど、任意の形式でファイルの格納とアクセスを実行できます。
ボリュームのユース ケース
Databricks では、表形式以外のすべてのデータへのアクセスを管理するために、ボリュームを使用することをお勧めします。 テーブルと同じように、ボリュームはマネージドまたは外部に設定できます。
ボリュームのユース ケースは次のとおりです。
- ETL パイプラインやその他のデータ エンジニアリング アクティビティの初期段階での処理をサポートするために、外部システムによって生成された生データのランディング領域を登録する。
- インジェストのためのステージング場所を登録する (たとえば自動ローダー
COPY INTO
または CTAS (CREATE TABLE AS
) ステートメントを使用)。 - データ サイエンティスト、データ アナリスト、機械学習エンジニアが探索的データ分析やその他のデータ サイエンス タスクの一部として使用するファイル ストレージの場所を提供します。
- Azure Databricks ユーザーに、他のシステムによってクラウド ストレージに生成および堆積された任意のファイルへのアクセスを提供します。たとえば、監視システムや IoT デバイスによってキャプチャされた大量の非構造化データ (画像、オーディオ、ビデオ、PDF ファイルなど) や、ローカル依存関係管理システムまたは CI/CD パイプラインからエクスポートされたライブラリ ファイル (JAR と Python ホイール ファイル) など。
- ログ記録やファイルのチェックポイント処理などの操作データを格納します。
重要
ボリューム内のファイルを Unity カタログのテーブルとして登録することはできません。 ボリュームは、パスベースのデータ アクセスのみを目的としています。 Unity Catalog で表形式データを操作する場合は、テーブルを使用します。
マネージド ボリュームとは
マネージド ボリュームは、含まれているスキーマのマネージド ストレージの場所に作成される、Unity Catalog によって管理されるストレージ ボリュームです。 「Unity Catalog の管理されたストレージの場所の指定」を参照してください。
マネージド ボリュームを使うと、外部の場所やストレージ資格情報のオーバーヘッドなしで、ファイルを操作するための管理されたストレージを作成できます。 マネージド ボリュームを作成するときに場所を指定する必要はありません。また、マネージド ボリューム内のデータに対するすべてのファイル アクセスは、Unity Catalog によって管理されるパスを介して行われます。
外部ボリュームとは
外部ボリュームは、Unity Catalog によって管理されるストレージ資格情報を使って外部の場所にあるディレクトリに対して登録された、Unity Catalog によって管理されるストレージ ボリュームです。
Unity Catalog では、外部ボリューム内のファイルのライフサイクルとレイアウトは管理されません。 外部ボリュームを削除しても、Unity Catalog では基になるデータは削除されません。
ボリューム内のファイルにアクセスするために使用されるパス
ボリュームは、Unity Catalog の 3 レベルある名前空間 (catalog.schema.volume
) の3 番目のレベルに位置します。
ボリュームにアクセスするためのパスは、Apache Spark、SQL、Python、またはその他の言語とライブラリを使う場合でも同じです。 これは、Azure Databricks ワークスペースにバインドされたオブジェクト ストレージ内のファイルに対する従来のアクセス パターンとは異なります。
ボリューム内のファイルにアクセスするためのパスでは、次の形式を使います。
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
Azure Databricks では、Apache Spark を使う場合にオプションの dbfs:/
のスキームもサポートされるため、次のパスも機能します。
dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
パス内のシーケンス /<catalog>/<schema>/<volume>
は、ファイルに関連付けられている 3 つの Unity Catalog オブジェクト名に対応します。 これらのパス要素は読み取り専用であり、ユーザーが直接書き込むことはできません。つまり、ファイルシステム操作を使ってこれらのディレクトリを作成または削除することはできません。 これらは自動で管理され、対応する Unity Catalog エンティティと同期されます。
注
クラウド ストレージの URI を使用して、外部ボリュームのデータにアクセスすることもできます。
ボリュームの予約済みパス
ボリュームには、ボリュームへのアクセスに使われる次の予約済みパスが導入されています。
dbfs:/Volumes
/Volumes
注
パスは、Apache Spark API と dbutils
からのこれらのパスの入力ミスの可能性も考慮して予約されています。前に /volumes
が付いているかどうかに関係なく、/Volume
、/volume
、dbfs:/
が含まれます。 パス /dbfs/Volumes
も予約されていますが、ボリュームへのアクセスには使用できません。
ボリュームは、Databricks Runtime 13.3 LTS 以降でのみサポートされています。 Databricks Runtime 12.2 LTS 以降では、 /Volumes
パスに対する操作は成功する可能性がありますが、データを書き込むことができるのは、データを想定どおりに Unity カタログ ボリュームに保持するのではなく、コンピューティング クラスターに接続されたエフェメラル ストレージ ディスクのみです。
重要
DBFS ルートの予約済みパスに格納されている既存のデータがある場合は、サポート チケットを提出してこのデータへの一時的なアクセス権を取得し、別の場所に移動することができます。
コンピューティングの要件
ボリュームを操作するときは、カタログ エクスプローラーなどの Azure Databricks UI を使っている場合を除き、Databricks Runtime 13.3 LTS 以降を実行している SQL ウェアハウスまたはクラスターを使う必要があります。
制限事項
Unity Catalog ボリュームを操作するには、Unity Catalog 対応コンピューティングを使用する必要があります。 すべてのワークロードがボリュームでサポートされているわけではありません。
次の表は、Databricks Runtime のバージョンに基づく Unity カタログボリュームの制限事項の概要を示しています。
Databricks Runtime のバージョン | 制限事項 |
---|---|
サポートされているすべての Databricks ランタイム バージョン |
|
14.3 LTS 以上 |
|
14.2 以下 |
|
次のステップ
ボリュームの操作の詳細については、次のリンクを参照してください。