次の方法で共有


Unity Catalog ボリュームとは?

ボリュームは、表形式ではないデータセットのガバナンスを有効にする Unity Catalog オブジェクトです。 ボリュームにより、クラウド オブジェクトの保存場所にあるストレージの論理ボリュームが示されます。 ボリュームにより、ファイルのアクセス、格納、管理、整理を行うための機能が提供されます。

テーブルは表形式データを管理しますが、ボリュームは、構造化、半構造化、非構造化など、任意の形式の表形式以外のデータを管理します。

Databricks では、表形式以外のすべてのデータへのアクセスを管理するために、ボリュームを使用することをお勧めします。 ボリュームは、次の 2 種類で利用できます。

  • マネージド ボリューム: 単純な Databricks マネージド ストレージの場合。
  • 外部ボリューム: 既存のクラウド オブジェクトストレージの場所にガバナンスを追加する場合。

ボリュームのユース ケース

ボリュームのユース ケースは次のとおりです。

  • ETL パイプラインやその他のデータ エンジニアリング アクティビティの初期段階での処理をサポートするために、外部システムによって生成された生データのランディング領域を登録する。
  • インジェストのステージング場所を登録します。 たとえば、自動ローダー、 COPY INTO、または CTAS (CREATE TABLE AS) ステートメントを使用します。
  • データ サイエンティスト、データ アナリスト、機械学習エンジニアが探索的データ分析やその他のデータ サイエンス タスクの一部として使用するファイル ストレージの場所を提供します。
  • Azure Databricks ユーザーに、他のシステムによってクラウド ストレージに生成および保存された任意のファイルへのアクセス権を付与します。 たとえば、監視システムや IoT デバイスによってキャプチャされた非構造化データ (画像、オーディオ、ビデオ、PDF ファイルなど) の大規模なコレクションや、ローカル依存関係管理システムまたは CI/CD パイプラインからエクスポートされたライブラリ ファイル (JAR と Python ホイール ファイル) などです。
  • ログ記録やファイルのチェックポイント処理などの操作データを格納します。

ボリュームの操作のデモについては、「Unity カタログ ボリュームを使用した ファイル、イメージ、およびデータの取得を簡略化する」を参照してください。

Important

ボリューム内のファイルを Unity カタログのテーブルとして登録することはできません。 ボリュームは、パスベースのデータ アクセスのみを目的としています。 Unity Catalog で表形式データを操作する場合は、テーブルを使用します。

マネージド ボリュームと外部ボリューム

マネージド ボリュームと外部ボリュームでは、Azure Databricks のツール、UI、API を使用する場合とほぼ同じエクスペリエンスが提供されます。 主な違いは、ストレージの場所、ライフサイクル、および制御に関連しています。

特徴 マネージド ボリューム 外部ボリューム
保存先 スキーマの UC マネージド ストレージ内に作成されます 既存のクラウド オブジェクト ストレージ パスに対して登録
データのライフサイクル UC はレイアウトと削除を管理します (削除時の 7 日間のリテンション期間) ボリュームを削除すると、データはクラウド ストレージに残ります
アクセス制御 すべてのアクセスは UC を経由します UC はアクセスを管理しますが、外部ツールでは直接 URI を使用できます
移行が必要ですか? いいえ [いいえ] - 既存のストレージ パスを使用 as-is
一般的なユース ケース Databricks 専用ワークロードの最も簡単なオプション Databricks と外部システム アクセスの混在

マネージド ボリュームを使用する理由

マネージド ボリュームには、次の利点があります。

  • Databricks ワークロードの既定の選択肢。
  • クラウド資格情報またはストレージ パスを手動で管理する必要はありません。
  • 管理されたストレージの場所をすばやく作成するための最も簡単なオプション。

外部ボリュームを使用する理由

外部ボリュームを使用すると、既存のクラウド オブジェクト ストレージ ディレクトリに Unity Catalog データ ガバナンスを追加できます。 外部ボリュームのユース ケースには、次のようなものがあります。

  • データのコピーを必要とせずに、データが既に存在するガバナンスを追加する。
  • Azure Databricks によって取り込まれるか、またはアクセスする必要がある他のシステムによって生成されたファイルを管理する。
  • 他のシステムによってクラウド オブジェクト ストレージから直接アクセスする必要がある Azure Databricks によって生成されたデータを管理する。

Databricks では、外部ボリュームを使用して、Azure Databricks に加えて外部システムによって読み取りまたは書き込まれた表形式以外のデータ ファイルを格納することをお勧めします。 Unity Catalog は、外部システムからのクラウド オブジェクト ストレージに対して直接実行される読み取りと書き込みを管理しないため、Azure Databricks の外部でデータ ガバナンス ポリシーが尊重されるように、クラウド アカウントで追加のポリシーと資格情報を構成する必要があります。

ボリューム内のファイルにアクセスするためのパス

ボリュームは、Unity Catalog の 3 レベルある名前空間 (catalog.schema.volume) の3 番目のレベルに位置します。

ボリュームに焦点を当てた Unity Catalog オブジェクト モデルの図

ボリュームにアクセスするためのパスは、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 カタログによって自動的に管理されます。 ファイルシステム コマンドを使用して作成または削除することはできません。

Note

クラウド ストレージの URI を使用して、外部ボリュームのデータにアクセスすることもできます。

ボリュームの予約済みパス

ボリュームには、ボリュームへのアクセスに使われる次の予約済みパスが導入されています。

  • dbfs:/Volumes
  • /Volumes

Note

パスは、Apache Spark API と dbutils からのこれらのパスの入力ミスの可能性も考慮して予約されています。前に /volumes が付いているかどうかに関係なく、/Volume/volumedbfs:/ が含まれます。 /dbfs/Volumesパスも予約されていますが、ボリュームへのアクセスには使用できません。

ボリュームは、Databricks Runtime 13.3 LTS 以降でのみサポートされています。 Databricks Runtime 12.2 LTS 以降では、 /Volumes パスに対する操作は成功する可能性がありますが、データを書き込むことができるのは、データを想定どおりに Unity カタログ ボリュームに保持するのではなく、コンピューティング クラスターに接続されたエフェメラル ストレージ ディスクのみです。

Important

DBFS ルートの予約パスに既存のデータが格納されている場合は、サポート チケットを提出して、このデータに一時的にアクセスして別の場所に移動します。

コンピューティング要件

ボリュームを使用する場合は、カタログ エクスプローラーなどの Azure Databricks UI を使用していない限り、SQL ウェアハウスまたは Databricks Runtime 13.3 LTS 以上を実行しているクラスターを使用する必要があります。

Limitations

Unity Catalog ボリュームを操作するには、Unity Catalog 対応コンピューティングを使用する必要があります。

次の表は、Databricks Runtime のバージョンに基づく Unity カタログボリュームの制限事項の概要を示しています。

Databricks Runtime のバージョン Limitations
サポートされているすべての Databricks ランタイム バージョン
  • ボリュームでは、executor に配布 dbutils.fs コマンドはサポートされていません。
  • Unity カタログ UDF では、ボリューム ファイル パスへのアクセスはサポートされていません。
  • RDD からボリュームにアクセスすることはできません。
  • ボリュームに格納されている JAR で従来の spark-submit タスクを使用することはできません。 代わりに、JAR タスクを使用します。 「ジョブの JAR タスク」を参照してください。
  • ホイールまたは JAR ファイル内のボリューム パスを介してアクセスされる他のライブラリへの依存関係を定義することはできません。
  • /Volumes/<catalog-name>または/Volumes/<catalog-name>/<schema-name> パターンを使用して Unity カタログ オブジェクトを一覧表示することはできません。 ボリューム名を含む完全修飾パスを使う必要があります (形式: Volumes/<catalog-name>/<schema-name>/<volume-name>)。 たとえば、dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • %sh mv は、ボリューム間でのファイルの移動ではサポートされていません。 代わりに、dbutils.fs.mv タグまたは %sh cp タグを使用してください。
  • ボリュームを含むカスタム Hadoop ファイル システムを作成することはできません。 たとえば、 new Path("dbfs:/Volumes/main/default/test-volume/file.txt") を使用して org.apache.hadoop.fs.path オブジェクトを作成することはできません。
  • ボリュームは、FedRAMP 準拠の Azure Government リージョンまたはワークスペースでは使用できません。
  • dbfs:/など、Azure Data Factory ライブラリ構成パネルのdbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/fileスキームでパス形式を使用する必要があります。
14.3 LTS 以上
  • 専用アクセス モード (以前のシングル ユーザー アクセス モード) を使用したコンピューティングでは、Scala のスレッドとサブプロセスからボリュームにアクセスすることはできません。
14.2 以下
  • 標準アクセス モード (以前の共有アクセス モード) で構成されたコンピューティングでは、UDF を使用してボリュームにアクセスすることはできません。
    • Python と Scala の両方がドライバーから FUSE にアクセスできますが、Executor からはアクセスできません。
    • I/O 操作を実行する Scala コードは、ドライバーで実行できますが、Executor では実行できません。
  • 専用アクセス モードで構成されたコンピューティングでは、Scala の FUSE、ボリューム パスを使用してデータにアクセスする Scala IO コード、または Scala UDF はサポートされません。 Python UDF は、専用アクセス モードでサポートされています。

次のステップ

ボリュームの操作の詳細については、次のリンクを参照してください。