管理磁碟區中的檔案
本文提供在 Unity 目錄 磁碟區 中管理各種使用者介面、工具、連結庫和語言檔案的範例。
Databricks 建議使用磁碟區來管理雲端物件記憶體中非表格式數據的所有存取。 非表格式資料的範例包括:
- 用於擷取的數據檔,例如 CSV、JSON 和 Parquet。
- 適用於數據科學、ML 和 AI 工作負載的文字、影像和音訊檔案。
- Azure Databricks 為與外部系統整合所撰寫的 CSV 或 JSON 成品。
您可以使用磁碟區來儲存檔案,例如連結庫、init 腳本和組建成品。 請參閱 磁碟區和工作區檔案中的檔案建議。
使用目錄總管 UI 在磁碟區中使用檔案
目錄總管會針對使用 Unity 目錄磁碟區儲存的檔案,提供一般檔案管理工作的選項。
若要與磁碟區中的檔案互動,請執行下列動作:
- 在您的 Azure Databricks 工作區中,按兩下 [目錄]。
- 搜尋或瀏覽您想要使用的磁碟區,並加以選取。
如需建立和管理磁碟區的詳細資訊,請參閱 建立和管理磁碟區。
將檔案上傳至磁碟區
[ 上傳至此磁碟區 ] 按鈕會開啟對話框來上傳檔案。 請參閱 將檔案上傳至 Unity 目錄磁碟區。
上傳的檔案不能超過 5 GB。
從磁碟區下載檔
若要從磁碟區下載檔,請執行下列動作:
- 選取一或多個檔案。
- 按兩下 [ 下載 ] 下載這些檔案。
從磁碟區刪除檔案
若要從磁碟區中刪除檔案,請執行下列動作:
- 選取一或多個檔案。
- 按一下 [刪除]。
- 按兩下 [ 刪除] 以確認出現在對話框中。
建立空白目錄
若要在磁碟區中建立新的目錄,請執行下列動作:
- 點選磁碟區名稱右邊的 。
- 選取 [建立目錄]。
- 輸入目錄名稱。
- 按一下 [建立]。
從磁碟區刪除目錄
若要從磁碟區中刪除目錄,請執行下列動作:
- 選取一或多個目錄。
- 按一下 [刪除]。
- 按兩下 [ 刪除] 以確認出現在對話框中。
磁碟區的 UI 檔案管理工作
單擊檔名旁的kebab功能表 ,以執行下列動作:
- 複製路徑
- 下載檔案
- 刪除檔案
- 建立資料表
從磁碟區中的數據建立數據表
Azure Databricks 提供 UI,從儲存在 Unity 目錄磁碟區中的檔案、檔案或目錄建立 Unity 目錄受控數據表。
您必須具有 CREATE TABLE
目標架構中的許可權,而且可以存取執行中的 SQL 倉儲。
選取一或多個檔案或目錄。 檔案應該具有相同的數據配置。
按兩下 [ 建立數據表]。 [ 從磁碟區 建立數據表] 對話框隨即出現。
使用提供的對話框來檢閱數據的預覽,並完成下列設定:
- 選擇 [建立新數據表] 或 [覆寫現有的數據表]
- 選取目標 目錄 和 架構。
- 指定 數據表名稱。
- (選擇性)覆寫預設數據行名稱和類型,或選擇排除數據行。
注意
按兩下 [ 進階屬性 ] 以檢視其他選項。
按兩下 [建立資料表 ] 以使用指定的屬性建立資料表。 完成時,目錄總管會顯示數據表詳細數據。
以程序設計方式在 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 連接器和驅動程序支援管理磁碟區中的檔案:
- 適用於 Python 的 Databricks SQL 連接器。 請參閱 管理 Unity 目錄磁碟區中的檔案。
- Databricks SQL Driver for Go。 請參閱 管理 Unity 目錄磁碟區中的檔案。
- Databricks SQL Driver for Node.js。 請參閱 管理 Unity 目錄磁碟區中的檔案。
- Databricks JDBC 驅動程式。 請參閱 使用 Databricks JDBC 驅動程式管理 Unity 目錄磁碟區中的檔案。
- Databricks ODBC 驅動程式。 請參閱 使用 Databricks ODBC 驅動程式管理 Unity 目錄磁碟區中的檔案。
使用 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 目錄磁碟區中的檔案。
- 適用於 Java 的 Databricks SDK。 使用 WorkspaceClient.files 中的可用方法。 如需範例,請參閱 管理 Unity 目錄磁碟區中的檔案。
- Databricks SDK for Go。 使用 WorkspaceClient.files 中的可用方法。 如需範例,請參閱 管理 Unity 目錄磁碟區中的檔案。
使用 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}"