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

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

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

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

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

  • 外部システムとの統合のために Databricks によって書き込まれた CSV または JSON アーティファクト。

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

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

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

ボリューム内のファイルを操作するには、次の操作を行います。

  1. Databricksワークスペースで、カタログアイコンカタログをクリックします。

  2. 処理するボリュームを検索または参照し、選択します。

ボリュームの作成と管理の詳細については、ボリュームの作成と管理を参照してください。

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

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

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

ボリュームからのファイルのダウンロード

ボリュームからファイルをダウンロードするには、次の操作を行います。

  1. 1 つまたは複数のファイルを選択します。

  2. ダウンロードをクリックして、これらのファイルをダウンロードします。

ボリュームからファイルを削除する

ボリュームからファイルを削除するには、次の操作を行います。

  1. 1 つまたは複数のファイルを選択します。

  2. 削除をクリックします。

  3. 削除をクリックして、表示されるダイアログで確定します。

空のディレクトリを作成する

ボリューム内に新しいディレクトリを作成するには、次の手順を実行します。

  1. ボリューム名の右側にある ケバブメニュー をクリックします。

  2. ディレクトリの作成を選択します。

  3. ディレクトリ名を入力します。

  4. 作成をクリックします。

ボリュームからディレクトリを削除する

ボリュームからディレクトリを削除するには、次の操作を行います。

  1. 1 つ以上のディレクトリを選択します。

  2. 削除をクリックします。

  3. 削除をクリックして、表示されるダイアログで確定します。

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

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

  • パスをコピー

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

  • ファイルを削除

  • CREATE TABLE

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

Databricks は、Unity Catalog ボリュームに格納されたファイル、ファイル、またはファイルのディレクトリから Unity Catalog マネージドテーブルを作成するための UI を提供します。

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

  1. 1 つ以上のファイルまたはディレクトリを選択します。 ファイルのデータ レイアウトは同じである必要があります。

  2. テーブルの作成をクリックします。ボリュームからテーブルを作成 ダイアログが表示されます。

  3. 表示されたダイアログを使用して、データのプレビューを確認し、次の構成を完了します。

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

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

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

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

    注:

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

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

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 キーワードをサポートしています。

注:

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

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

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

databricks fsのサブコマンドを使用します。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}"