ボリューム
適用対象: Databricks SQL Databricks Runtime 13.3 LTS 以降 Unity Catalog のみ
ボリュームは、クラウド オブジェクトの保存場所にあるストレージの論理ボリュームを表す Unity Catalog オブジェクトです。 ボリュームにより、ファイルのアクセス、格納、管理、整理を行うための機能が提供されます。 テーブルにより、表形式データセットに対するガバナンスが提供される一方、ボリュームにより、表形式以外のデータセットに対するガバナンスが追加されます。 ボリュームを使うと、構造化データ、半構造化データ、非構造化データなど、任意の形式でファイルの格納とアクセスを実行できます。
ボリュームは、Unity Catalog のスキーマで編成されたテーブル、ビュー、およびその他のオブジェクトの兄弟です。
ボリュームは、マネージドまたは外部にすることができます。
詳細と制限事項については、「Unity Catalog ボリュームとは」を参照してください。
マネージド ボリューム
マネージド ボリュームは、含まれているスキーマのマネージド ストレージの場所に作成され、Unity Catalog によって管理されるストレージ ボリュームです。 マネージド ボリュームを使うと、外部の場所やストレージ資格情報のオーバーヘッドなしで、ファイルを操作するための管理されたストレージを作成できます。 マネージド ボリュームを作成するときに場所を指定する必要はありません。また、マネージド ボリューム内のデータに対するすべてのファイル アクセスは、Unity Catalog によって管理されるパスを介して行われます。
外部ボリューム
外部ボリュームは、外部の場所にあるディレクトリに対して登録された、Unity Catalog によって管理されるストレージ ボリュームです。
ボリュームの名前付けと参照
ボリューム名は、SQL コマンドでカタログ名とスキーマ名を使って修飾できる識別子です。
ボリューム内のファイルにアクセスするためのパスでは、次の形式を使います。
/Volumes/<catalog_identifier>/<schema_identifier>/<volume_identifier>/<path>/<file_name>
Azure Databricks では、識別子が小文字に正規化されることに注意してください。
Azure Databricks は、オプションの dbfs:/
スキームもサポートしているため、次のパスも機能します。
dbfs:/Volumes/<catalog_identifier>/<schema_identifier>/<volume_identifier>/<path>/<file_name>
Note
クラウド ストレージの URI を使用して、外部ボリュームのデータにアクセスすることもできます。
ボリューム内のファイルを管理する
適用対象: Databricks SQL コネクタ
Databricks SQL Connector を使用すると、次のコマンドを使用してボリューム内のファイルを管理できます。
- PUT INTO: ローカル ストレージからボリュームにファイルをコピーします。
- GET: ボリュームからローカル ストレージにファイルをコピーします。
- REMOVE: ボリュームからファイルを削除します。
例
--- Create an external volume under the directory “my-path”
> CREATE EXTERNAL VOLUME IF NOT EXISTS myCatalog.mySchema.myExternalVolume
COMMENT 'This is my example external volume'
LOCATION 's3://my-bucket/my-location/my-path'
OK
--- Set the current catalog
> USE CATALOG myCatalog;
OK
--- Set the current schema
> USE SCHEMA mySchema;
OK
--- Create a managed volume; it is not necessary to specify a location
> CREATE VOLUME myManagedVolume
COMMENT 'This is my example managed volume';
OK
--- List the files inside the volume, all names are lowercase
> LIST '/Volumes/mycatalog/myschema/myexternalvolume'
sample.csv
> LIST 'dbfs:/Volumes/mycatalog/myschema/mymanagedvolume'
sample.csv
--- Print the content of a csv file
> SELECT * FROM csv.`/Volumes/mycatalog/myschema/myexternalvolume/sample.csv`
20
> SELECT * FROM csv.`dbfs:/Volumes/mycatalog/myschema/mymanagedvolume/sample.csv`
20