ボリューム内のファイルを管理する
この記事では、さまざまなユーザーインターフェース、ツール、ライブラリ、言語の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 を超えることはできません。
ボリューム内のデータからテーブルを作成する
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 コネクタとドライバーは、ボリューム内のファイルの管理をサポートしています。
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
の submコマンドを使用します。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}"