分享方式:


管理磁碟區中的檔案

本文提供在 Unity 目錄 磁碟區 中管理各種使用者介面、工具、連結庫和語言檔案的範例。

Databricks 建議使用磁碟區來管理雲端物件記憶體中非表格式數據的所有存取。 非表格式資料的範例包括:

  • 用於擷取的數據檔,例如 CSV、JSON 和 Parquet。
  • 適用於數據科學、ML 和 AI 工作負載的文字、影像和音訊檔案。
  • Azure Databricks 為與外部系統整合所撰寫的 CSV 或 JSON 成品。

您可以使用磁碟區來儲存檔案,例如連結庫、init 腳本和組建成品。 請參閱 磁碟區和工作區檔案中的檔案建議。

使用目錄總管 UI 在磁碟區中使用檔案

目錄總管會針對使用 Unity 目錄磁碟區儲存的檔案,提供一般檔案管理工作的選項。

若要與磁碟區中的檔案互動,請執行下列動作:

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示 [目錄]。
  2. 搜尋或瀏覽您想要使用的磁碟區,並加以選取。

如需建立和管理磁碟區的詳細資訊,請參閱 建立和管理磁碟區

將檔案上傳至磁碟區

[ 上傳至此磁碟區 ] 按鈕會開啟對話框來上傳檔案。 請參閱 將檔案上傳至 Unity 目錄磁碟區

上傳的檔案不能超過 5 GB。

從磁碟區下載檔

若要從磁碟區下載檔,請執行下列動作:

  1. 選取一或多個檔案。
  2. 按兩下 [ 下載 ] 下載這些檔案。

從磁碟區刪除檔案

若要從磁碟區中刪除檔案,請執行下列動作:

  1. 選取一或多個檔案。
  2. 按一下 [刪除]
  3. 按兩下 [ 刪除] 以確認出現在對話框中。

建立空白目錄

若要在磁碟區中建立新的目錄,請執行下列動作:

  1. Kebab 功能表點選磁碟區名稱右邊的 。
  2. 選取 [建立目錄]
  3. 輸入目錄名稱。
  4. 按一下 [建立]。

從磁碟區刪除目錄

若要從磁碟區中刪除目錄,請執行下列動作:

  1. 選取一或多個目錄。
  2. 按一下 [刪除]
  3. 按兩下 [ 刪除] 以確認出現在對話框中。

磁碟區的 UI 檔案管理工作

單擊檔名旁的kebab功能表 Kebab 功能表 ,以執行下列動作:

  • 複製路徑
  • 下載檔案
  • 刪除檔案
  • 建立資料表

從磁碟區中的數據建立數據表

Azure Databricks 提供 UI,從儲存在 Unity 目錄磁碟區中的檔案、檔案或目錄建立 Unity 目錄受控數據表。

您必須具有 CREATE TABLE 目標架構中的許可權,而且可以存取執行中的 SQL 倉儲。

  1. 選取一或多個檔案或目錄。 檔案應該具有相同的數據配置。

  2. 按兩下 [ 建立數據表]。 [ 從磁碟區 建立數據表] 對話框隨即出現。

  3. 使用提供的對話框來檢閱數據的預覽,並完成下列設定:

    • 選擇 [建立新數據表] 或 [覆寫現有的數據表]
    • 選取目標 目錄架構
    • 指定 數據表名稱
    • (選擇性)覆寫預設數據行名稱和類型,或選擇排除數據行。

    注意

    按兩下 [ 進階屬性 ] 以檢視其他選項。

  4. 按兩下 [建立資料表 ] 以使用指定的屬性建立資料表。 完成時,目錄總管會顯示數據表詳細數據。

以程序設計方式在 Azure Databricks 上的磁碟區中使用檔案

您可以使用下列格式,從所有支援的語言和工作區編輯器讀取和寫入磁碟區中的檔案:

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

您可以使用與任何雲端物件儲存位置中的檔案互動的方式,與磁碟區中的檔案互動。 這表示,如果您目前管理使用雲端 URI、DBFS 掛接路徑或 DBFS 根路徑來與資料或檔案互動的程式代碼,您可以更新程式代碼以改用磁碟區。

注意

磁碟區僅用於非表格式數據。 Databricks 建議使用 Unity 目錄數據表註冊表格式數據,然後使用數據表名稱讀取和寫入數據。

讀取和寫入磁碟區中的數據

您可以使用 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 提供下列工具來管理磁碟區中的檔案:

  • dbutils.fs Databricks Utilities 中的子模組。 請參閱 檔案系統公用程式 (dbutils.fs)
  • magic %fs ,這是 的 dbutils.fs別名。
  • magic %sh ,允許針對磁碟區執行bash命令。

如需使用這些工具從因特網下載檔案、將檔案解壓縮,以及將檔案從暫時區塊記憶體移至磁碟區的範例,請參閱 從因特網下載數據。

您也可以將 OSS 套件用於檔案公用程式命令,例如 Python os 模組,如下列範例所示:

import os

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

從外部工具管理磁碟區中的檔案

Databricks 提供一套工具,以程式設計方式從本機環境或整合系統管理磁碟區中的檔案。

磁碟區中檔案的 SQL 命令

Azure 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 管理磁碟區中的檔案

使用檔案 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}"