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

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

Databricks では、クラウド オブジェクト ストレージ内の表形式以外のデータへのすべてのアクセスを管理するために、ボリュームを使用することをお勧めします。 表形式以外のデータの例を次に示します。

  • CSV、JSON、Parquet などのインジェスト用データ ファイル。
  • データ サイエンス、機械学習、AI ワークロード用のテキスト、画像、オーディオ ファイル。
  • Azure Databricks によって記述された、外部システムとの統合のための CSV または JSON 成果物。

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

カタログ エクスプローラー UI を使用してボリューム内のファイルを操作する

Catalog Explorer には、Unity Catalog ボリュームに保存されているファイルの一般的なファイル管理タスクのオプションが用意されています。

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

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。
  2. 操作するボリュームを検索または参照して、それを選択します。

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

ボリュームにファイルをアップロードする

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

5 GB より大きいファイルをアップロードすることはできません。

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

ボリュームからファイルをダウンロードするには、次のようにします。

  1. 1 つ以上のファイルを選択します。
  2. [ダウンロード] をクリックしてファイルをダウンロードします。

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

ボリュームからファイルを削除するには、次のようにします。

  1. 1 つ以上のファイルを選択します。
  2. [Delete] をクリックします。
  3. 表示されるダイアログで [削除] をクリックして確定します。

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

ボリュームに新しいディレクトリを作成するには、次のようにします。

  1. ボリューム名の右側にある ケバブ メニュー をクリックします。
  2. [ディレクトリの作成] を選択します。
  3. ディレクトリの名前を入力します。
  4. Create をクリックしてください。

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

ボリュームからディレクトリを削除するには、次のようにします。

  1. 1 つ以上のディレクトリを選択します。
  2. [Delete] をクリックします。
  3. 表示されるダイアログで [削除] をクリックして確定します。

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

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

  • パスのコピー
  • ファイルをダウンロードする
  • ファイルの削除
  • テーブルを作成する

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

Azure Databricks には、Unity Catalog ボリュームに保存されている 1 つ以上のファイルまたはファイルのディレクトリから Unity Catalog のマネージド テーブルを作成するための UI が用意されています。

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

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

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

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

    • [新しいテーブルの作成] または [既存のテーブルの上書き] を選択する。
    • ターゲット [カタログ][スキーマ] を選択する。
    • [テーブル名] を指定する。
    • (オプション) 既定の列名と型をオーバーライドするか、列の除外を選択します。

    Note

    追加のオプションを表示するには、[属性の詳細] をクリックします。

  4. [テーブルの作成] をクリックして、指定した属性でテーブルを作成します。 完了すると、Catalog Explorer にテーブルの詳細が表示されます。

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

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

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

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

Note

ボリュームは、表形式以外のデータにのみ使用されます。 Databricks では、Unity Catalog テーブルを使用して表形式データを登録してから、テーブル名を使用してデータの読み取りと書き込みを行うことをお勧めします。

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

Apache Spark、pandas、Spark SQL、その他の OSS ライブラリを使用して、ボリューム内のデータ ファイルの読み取りと書き込みを行うことができます。

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

Python

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

display(df)

Pandas

import pandas as pd

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

display(df)

SQL

SELECT * FROM csv.`/Volumes/catalog_name/schema_name/volume_name/data.csv`

ボリューム内のファイルに対するユーティリティ コマンド

Databricks には、ボリューム内のファイルを管理するための次のツールが用意されています。

これらのツールを使用して、インターネットからファイルをダウンロードし、ファイルを解凍し、エフェメラル ブロック ストレージからボリュームにファイルを移動する方法の例については、「インターネットからデータをダウンロードする」を参照してください。

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

import os

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

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

Databricks には、ローカル環境または統合システムからボリューム内のファイルをプログラムで管理するための一連のツールが用意されています。

ボリューム内のファイルに対する SQL コマンド

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

Note

Databricks ノートブックまたはクエリ エディターでは、LIST コマンドのみがサポートされています。

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

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

databricks fs でサブコマンドを使用します。 「fs コマンド グループ」を参照してください。

Note

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}"