次の方法で共有


ボリューム

適用対象:check marked yes 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