ボリューム内のファイルを管理する
この記事では、さまざまなユーザー インターフェイス、ツール、ライブラリ、言語の Unity Catalog ボリューム でファイルを管理する例を示します。
Databricks では、クラウド オブジェクト ストレージ内のテーブル以外のデータへのすべてのアクセスを管理するためにボリュームを使用することを推奨しています。 テーブル以外のデータの例には、次のようなものがあります。
- インジェスト用のデータ ファイル ( CSV、 JSON、 Parquetなど)。
- データサイエンス、 ML、および AI ワークロード用のテキスト、画像、およびオーディオファイル。
- 外部システムとの統合のために Databricks によって書き込まれた CSV または JSON アーティファクト。
ボリュームは、ライブラリ、initスクリプト、ビルドアーティファクトなどのファイルを保存するために使用できます。 ボリューム内のファイルおよびワークスペース・ファイルに関する推奨事項を参照してください。
カタログエクスプローラーUIを使用したボリューム内のファイルの操作
カタログエクスプローラーには、Unity Catalogボリュームに保存されているファイルのための一般的なファイル管理タスクのオプションが用意されています。
ボリューム内のファイルを操作するには、次の操作を行います。
- Databricks ワークスペースで、[
カタログ] をクリックします。
- 作業するボリュームを検索または参照し、それを選択します。
ボリュームの作成と管理の詳細については、「 ボリュームの作成と管理」を参照してください。
ボリュームへのファイルのアップロード
「 このボリュームにアップロード 」ボタンをクリックすると、ファイルをアップロードするためのダイアログが開きます。 「Unity Catalog ボリュームへのファイルのアップロード」を参照してください。
アップロードするファイルは5GBを超えないようにしてください。
ボリュームからのファイルのダウンロード
ボリュームからファイルをダウンロードするには、次の操作を行います。
- 1 つ以上のファイルを選択します。
- ダウンロード をクリックして、これらのファイルをダウンロードします。
一度にダウンロードできるファイルは 10 個までです。
ボリュームからファイルを削除する
ボリュームからファイルを削除するには、次の操作を行います。
- 1 つ以上のファイルを選択します。
- 削除 をクリックします。
- 削除 をクリックして、表示されるダイアログで確定します。
空白のディレクトリを作成する
ボリューム内に新しいディレクトリを作成するには、次の手順を実行します。
- ボリューム名の右側にある
をクリックします。
- ディレクトリの作成 を選択します。
- ディレクトリ名を入力します。
- 作成 をクリックします。
ボリュームからディレクトリを削除する
ボリュームからディレクトリを削除するには、次の手順を実行します。
- 1 つ以上のディレクトリを選択します。
- 削除 をクリックします。
- 削除 をクリックして、表示されるダイアログで確定します。
ボリュームの UI ファイル管理タスク
ファイル名の横にあるケバブメニューをクリックして、次の操作を実行します。
- パスをコピー
- ファイルをダウンロード
- ファイルを削除
- テーブルを作成
ボリューム内のデータからテーブルを作成する
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 テーブルを使用して登録する tabular data から、テーブル名を使用してデータを読み書きすることをお勧めします。
ボリューム内のデータの読み取りと書き込み
Apache Spark、Pandas、Spark SQL、およびその他の OSS ライブラリを使用して、ボリューム内のデータ ファイルの読み取りと書き込みを行うことができます。
次の例は、ボリュームに格納された CSV ファイルの読み取りを示しています。
- Python
- Pandas
- SQL
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 SQL Connector for Python。 「Unity Catalog ボリューム内のファイルの管理」を参照してください。
- Go 用の Databricks SQL ドライバー。 「Unity Catalog ボリューム内のファイルの管理」を参照してください。
- The Databricks SQL Driver for Node.js. 「Unity Catalog ボリューム内のファイルの管理」を参照してください。
- Databricks JDBC ドライバー。 「ドライバーを使用した ボリューム内のファイルの管理Unity Catalog 」を参照してください。DatabricksJDBC
- 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 は、ボリューム内のファイルの管理をサポートしています。
- Databricks SDK for Python。 WorkspaceClient.files で使用可能なメソッドを使用します。例については、「 Unity Catalog ボリューム内のファイルを管理する」を参照してください。
- Databricks SDK for Java。 WorkspaceClient.files で使用可能なメソッドを使用します。例については、「 Unity Catalog ボリューム内のファイルを管理する」を参照してください。
- Databricks SDK for Go。 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}"