ボリューム内のファイルを管理する

この記事では、さまざまなユーザーインターフェース、ツール、ライブラリ、言語のUnity Catalogボリュームでファイルを管理する例を示します。

Databricks では、クラウド オブジェクト ストレージ内の非表形式データへのすべてのアクセスを管理するためにボリュームを使用することを推奨しています。 表形式以外のデータの例には、次のようなものがあります。

  • CSV、JSON、Parquet などの取り込み用データ ファイル。

  • データサイエンス、 ML 、 AIワークロード用のテキスト、画像、オーディオ ファイル。

  • 外部システムとの統合のために Databricks によって書き込まれた CSV または JSON 成果物。

ボリュームは、ライブラリ、initscript、ビルド成果物などのファイルを保存するために使用できます。 ボリューム内のファイルとワークスペース ファイルに関する推奨事項を参照してください。

「カタログエクスプローラ」(Catalog Explorer UI) を使用したボリューム内のファイルの操作

カタログ エクスプローラーは、 Unity Catalogボリュームに保存されたファイルの一般的なファイル管理タスクのオプションを提供します。

ボリュームの名前変更または削除

[このボリュームにアップロード ] の横にあるケバブ メニューケバブメニュー をクリックして、ボリューム の名前変更 または 削除 のオプションを表示します。

ボリュームに対するアクセス許可の設定

「カタログエクスプローラ」(Catalog Explorer) を使用して、ボリュームのパーミッションを管理したり、新しい主体をボリュームの所有者として割り当てたりできます。 「Unity Catalog での権限の管理」および「Unity Catalog オブジェクトの所有権の管理」を参照してください。

ボリュームへのファイルのアップロード

[ このボリュームにアップロード] ボタンをクリックすると、ファイルをアップロードするためのダイアログが開きます。 Unity Catalogボリュームにファイルをアップロードする」を参照してください。

アップロードできるファイルは 5 GB を超えることはできません。

ボリュームのUIファイル管理タスク

ファイル名の横にあるケバブメニュー ケバブメニュー をクリックして、次の操作を実行します。

  • パスをコピー

  • ファイルをダウンロード

  • ファイルを削除

  • CREATE TABLE

ボリューム内のデータからテーブルを作成する

Databricks は、Unity Catalog ボリュームに保存されているファイルまたはファイルのディレクトリから Unity Catalog 管理テーブルを作成するための UI を提供します。

ターゲット スキーマで CREATE TABLE 権限を持ち、実行中のSQLウェアハウスにアクセスできる必要があります。

提供されている UI を使用して、次の選択を行うことができます。

  • [新しいテーブルの作成] または [既存のテーブルを上書きする] を選択します

  • ターゲット の「カタログ 」と 「スキーマ」を選択します。

  • テーブル名を指定します。

  • デフォルトの列名とタイプを上書きするか、列を除外することを選択します。

注:

詳細属性 」をクリックして、追加オプションを表示します。

[ テーブルの作成 ] をクリックして、指定した場所にテーブルを作成します。 完了すると、カタログエクスプローラーにテーブルの詳細が表示されます。

Databricks のボリューム内のファイルをプログラムで操作する

次の形式を使用して、サポートされているすべての言語とワークスペース エディターからボリューム内のファイルを読み書きできます。

/Volumes/catalog_name/schema_name/volume_name/path/to/files

ボリューム内のファイルは、任意のクラウド オブジェクト ストレージの場所にあるファイルと同じ方法で操作します。 つまり、現在、データやファイルとやり取りするためにクラウド URI、 DBFSマウント パス、またはDBFSルート パスを使用するコードを管理している場合は、代わりにボリュームを使用するようにコードを更新できます。

注:

ボリュームは、表形式以外のデータにのみ使用されます。 Databricks 、 Unity Catalogテーブルを使用して表形式のデータを登録し、テーブル名を使用してデータを読み書きすることを推奨しています。

ボリューム内のデータの読み取りと書き込み

Apache Spark 、 Pandas 、 Spark SQL 、その他の OSS ライブラリを使用して、ボリューム内のデータファイルを読み書きできます。

次の例は、ボリュームに保存されている CSV ファイルの読み取りを示しています。

df = spark.read.format("csv").load("/Volumes/catalog_name/schema_name/volume_name/data.csv")

display(df)
import pandas as pd

df = pd.read_csv('/Volumes/catalog_name/schema_name/volume_name/data.csv')

display(df)
SELECT * FROM csv.`/Volumes/catalog_name/schema_name/volume_name/data.csv`

ボリューム内のファイル用のユーティリティコマンド

Databricks は、ボリューム内のファイルを管理するための次のツールを提供します。

  • Databricks ユーティリティのdbutils.fsサブモジュール。 ファイル システム ユーティリティ (dbutils.fs)を参照してください。

  • %fsマジックは、dbutils.fsの別名です。

  • ボリュームに対して bash コマンドを実行できるようにする%shマジック。

これらのツールを使用して、インターネットからのファイルのダウンロード、ファイルの解凍、および一時ブロック・ストレージからボリュームへのファイルの移動の例は、 インターネットからのデータのダウンロードを参照してください。

次の例に示すように、Python osモジュールなどのファイル ユーティリティ コマンドに OSS パッケージを使用することもできます。

import os

os.mkdir('/Volumes/catalog_name/schema_name/volume_name/directory_name')

外部ツールからボリューム内のファイルを管理する

Databricks は、ローカル環境または統合システムからボリューム内のファイルをプログラムで管理するためのツール スイートを提供します。

ボリューム内のファイル用のSQLコマンド

Databricks は、ボリューム内のファイルを操作するための次の SQL キーワードをサポートしています。

  • PUT

  • GET

  • LIST

  • DELETE

注:

Databricks ノートブックまたはクエリ エディターは、 LISTコマンドのみをサポートします。

次の Databricks SQL コネクタとドライバーは、ボリューム内のファイルの管理をサポートしています。

Databricks CLI を使用してボリューム内のファイルを管理する

databricks fsの submコマンドを使用します。fs コマンド グループを参照してください。

注:

Databricks CLI では、すべてのボリューム パスの前にスキームdbfs:/が必要です。 たとえば、 dbfs:/Volumes/catalog_name/schema_name/volume_name/path/to/dataです。

SDKでボリューム内のファイルを管理する

次の SDK は、ボリューム内のファイルの管理をサポートしています。

REST APIを使用してボリューム内のファイルを管理する

ボリューム内のファイルを管理するには、 Files APIを使用します。

ボリューム内のファイルの REST API の例

次の例では、 curlと Databricks REST API を使用して、ボリューム内のファイル管理タスクを実行します。

次の例では、指定したボリュームに my-folder という名前の空のフォルダーを作成します。

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

次の例では、ボリューム内の指定されたパスに、指定したデータを含む data.csv という名前のファイルを作成します。

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv?overwrite=true" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--header "Content-Type: application/octet-stream" \
--data-binary $'id,Text\n1,Hello World!'

次の例では、指定したパス内のボリュームの内容を一覧表示します。 この例では、 jq を使用して、応答本文の JSON を読みやすくフォーマットします。

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

次の例では、指定したパスのボリューム内のフォルダーの内容を一覧表示します。 この例では、 jq を使用して、応答本文の JSON を読みやすくフォーマットします。

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

次の例では、ボリューム内の指定されたパスにあるファイルの内容を出力します。

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

次の例では、指定したパスにあるファイルをボリュームから削除します。

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

次の例では、指定したボリュームからフォルダーを削除します。

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"