ボリューム内のファイルを管理する
この記事では、さまざまなユーザーインターフェース、ツール、ライブラリ、言語のUnity Catalogボリュームでファイルを管理する例を示します。
Databricks では、クラウド オブジェクト ストレージ内のテーブル以外のデータへのすべてのアクセスを管理するためにボリュームを使用することを推奨しています。 テーブル以外のデータの例には、次のようなものがあります。
CSV、JSON、Parquet などの取り込み用データ ファイル。
データサイエンス、 ML 、 AIワークロード用のテキスト、画像、オーディオ ファイル。
外部システムとの統合のために Databricks によって書き込まれた CSV または JSON アーティファクト。
ボリュームは、ライブラリ、initスクリプト、ビルドアーティファクトなどのファイルを保存するために使用できます。 ボリューム内のファイルとワークスペース ファイルに関する推奨事項を参照してください。
「カタログエクスプローラ」(Catalog Explorer UI) を使用したボリューム内のファイルの操作
カタログ エクスプローラーは、 Unity Catalogボリュームに保存されたファイルの一般的なファイル管理タスクのオプションを提供します。
ボリューム内のファイルを操作するには、次の操作を行います。
Databricksワークスペースで、カタログをクリックします。
処理するボリュームを検索または参照し、選択します。
ボリュームの作成と管理の詳細については、ボリュームの作成と管理を参照してください。
ボリュームへのファイルのアップロード
このボリュームにアップロードボタンをクリックすると、ファイルをアップロードするためのダイアログが開きます。 Unity Catalog ボリュームへのファイルのアップロードを参照してください。
アップロードできるファイルは 5 GB を超えることはできません。
ボリュームからのファイルのダウンロード
ボリュームからファイルをダウンロードするには、次の操作を行います。
1 つまたは複数のファイルを選択します。
ダウンロードをクリックして、これらのファイルをダウンロードします。
ボリュームからファイルを削除する
ボリュームからファイルを削除するには、次の操作を行います。
1 つまたは複数のファイルを選択します。
削除をクリックします。
削除をクリックして、表示されるダイアログで確定します。
空のディレクトリを作成する
ボリューム内に新しいディレクトリを作成するには、次の手順を実行します。
ボリューム名の右側にある をクリックします。
ディレクトリの作成を選択します。
ディレクトリ名を入力します。
作成をクリックします。
ボリュームからディレクトリを削除する
ボリュームからディレクトリを削除するには、次の操作を行います。
1 つ以上のディレクトリを選択します。
削除をクリックします。
削除をクリックして、表示されるダイアログで確定します。
ボリューム内のデータからテーブルを作成する
Databricks は、Unity Catalog ボリュームに格納されたファイル、ファイル、またはファイルのディレクトリから Unity Catalog マネージドテーブルを作成するための UI を提供します。
ターゲット スキーマで CREATE TABLE
権限を持ち、実行中のSQLウェアハウスにアクセスできる必要があります。
1 つ以上のファイルまたはディレクトリを選択します。 ファイルのデータ レイアウトは同じである必要があります。
テーブルの作成をクリックします。ボリュームからテーブルを作成 ダイアログが表示されます。
表示されたダイアログを使用して、データのプレビューを確認し、次の構成を完了します。
新しいテーブルの作成または既存のテーブルを上書きするを選択します
ターゲットのカタログ と スキーマを選択します。
テーブル名を指定します。
(オプション)デフォルトの列名とタイプを上書きするか、列を除外することを選択します。
注:
詳細属性 をクリックして、追加オプションを表示します。
テーブルを作成 をクリックして、指定した属性でテーブルを作成します。 完了すると、カタログエクスプローラにテーブルの詳細が表示されます。
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 コネクタとドライバーは、ボリューム内のファイルの管理をサポートしています。
Python 用の Databricks SQL コネクタ。 Unity Catalog ボリューム内のファイルの管理を参照してください。
Go 用の Databricks SQL ドライバー。 Unity Catalog ボリューム内のファイルの管理を参照してください。
Node.js 用の Databricks SQL ドライバー。 Unity Catalog ボリューム内のファイルの管理を参照してください。
Databricks JDBC ドライバー。 Databricks JDBC ドライバーを使用して Unity Catalog ボリューム内のファイルを管理するを参照してください。
Databricks ODBC ドライバー。 Databricks ODBC ドライバーを使用して Unity Catalog ボリューム内のファイルを管理するを参照してください。
Databricks CLI を使用してボリューム内のファイルを管理する
databricks fs
のサブコマンドを使用します。fs コマンド グループを参照してください。
注:
Databricks CLI では、すべてのボリューム パスの前にスキームdbfs:/
が必要です。 たとえば、 dbfs:/Volumes/catalog_name/schema_name/volume_name/path/to/data
です。
SDKでボリューム内のファイルを管理する
次の SDK は、ボリューム内のファイルの管理をサポートしています。
Python 用の Databricks SDK。 WorkspaceClient.files で使用可能なメソッドを使用します。例については、 Unity Catalogボリューム内のファイルの管理を参照してください。
Java 用の Databricks SDK。 WorkspaceClient.files で使用可能なメソッドを使用します。例については、 Unity Catalogボリューム内のファイルの管理を参照してください。
Go 用の Databricks SDK。 WorkspaceClient.files で使用可能なメソッドを使用します。例については、 Unity Catalogボリューム内のファイルの管理を参照してください。
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}"