共用方式為


什麼是 Unity 目錄磁碟區?

卷是 Unity Catalog 物件,可對非表格式數據進行管理。 卷代表雲端物件儲存位置中的邏輯儲存卷。 磁碟區提供存取、儲存、控管和組織檔案的功能。

雖然數據表提供表格式數據集的控管,但數據卷對非表格式數據集提供控管。 您可以使用磁碟區,以任何格式儲存和存取檔案,包括結構化、半結構化和非結構化數據。

磁碟區使用案例

Databricks 建議使用磁碟區來管理所有非表格式數據的存取權。 如同表格,磁碟區可以是已管理或外部的。

儲存容量的使用案例包括:

  • 註冊外部系統所產生原始數據的登陸區域,以支援其在 ETL 管線和其他數據工程活動的早期階段進行處理。
  • 註冊擷取的暫存位置,例如,使用自動載入器、 COPY INTO或 CTAS (CREATE TABLE AS) 語句。
  • 為數據科學家、數據分析師和機器學習工程師提供檔案儲存位置,以作為其探勘數據分析和其他數據科學工作的一部分。
  • 讓 Azure Databricks 使用者可以獲得存取權限來開啟由其他系統產生並儲存在雲端儲存中的任何檔案,例如由監控系統或 IoT 裝置所擷取的非結構化數據的大型集合(如影像、音訊、影片和 PDF 檔案),或從本機相依性管理系統或 CI/CD 管線匯出的函式庫檔案(例如 JAR 和 Python 輪檔檔案)。
  • 儲存營運數據,例如記錄檔或檢查點檔案。

重要

您無法將磁碟區中的檔案註冊為 Unity 目錄中的數據表。 磁碟區僅供路徑型數據存取使用。 當您想要在 Unity Catalog 中處理表格式資料時,請使用資料表。

什麼是受管理的磁碟區?

受控磁碟區是在 Unity 目錄控管的儲存位置內建立的受控儲存磁碟區。 請參閱 在 Unity 目錄中指定受控儲存位置。

受控磁碟區允許建立受控記憶體以處理檔案,而不需要外部位置和記憶體認證的額外負荷。 建立受控磁碟區時,您不需要指定位置,而且受控磁碟區中數據的所有檔案存取都是透過 Unity 目錄所管理的路徑。

什麼是外部磁碟區?

外部儲存卷是使用 Unity Catalog 控管的存取憑證,註冊於外部位置內目錄的 Unity Catalog 控管儲存卷。

Unity 目錄不會管理外部磁碟區中檔案的生命週期和配置。 當您卸除外部磁碟區時,Unity 目錄不會刪除基礎數據。

哪些路徑可用來存取磁碟區中的檔案?

資料分區位於 Unity 編目三層命名空間的第三層 (catalog.schema.volume):

Unity Catalog 物件模型圖表,著重於資料容量

無論您使用 Apache Spark、SQL、Python 或其他語言和連結庫,存取磁碟區的路徑都相同。 這與系結至 Azure Databricks 工作區之物件記憶體中檔案的舊版存取模式不同。

存取磁碟區中檔案的路徑會使用下列格式:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

使用 Apache Spark 時,Azure Databricks 也支援選擇性 dbfs:/ 配置,因此下列路徑也有效:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

路徑中的序列 /<catalog>/<schema>/<volume> 會對應至與檔案相關聯的三個 Unity Catalog 物件名稱。 這些路徑元素是只讀的,用戶無法直接寫入,這表示無法使用文件系統作業建立或刪除這些目錄。 系統會自動管理它們,並與對應的 Unity 目錄實體保持同步。

備註

您也可以使用雲端記憶體 URI 存取外部磁碟區中的數據。

磁碟區的預留路徑

磁碟容量說明以下用來存取磁碟容量的保留路徑:

  • dbfs:/Volumes
  • /Volumes

備註

也會為 Apache Spark API 和 dbutils的這些路徑保留可能的錯字,包括 /volumes/Volume/volume,並且無論它們前面是否有 dbfs:/。 路徑 /dbfs/Volumes 也是保留的,但無法用來存取磁碟區。

只有 Databricks 執行環境 13.3 LTS 和更新版本才支援磁碟區。 在 Databricks Runtime 12.2 LTS 和更早版本中,針對 /Volumes 路徑的作業可能會成功,但只能將數據寫入附加至計算叢集的暫存儲存磁碟,而無法如預期般將數據保存到 Unity Catalog 磁碟區。

重要

如果您已將預先存在的數據儲存在 DBFS 根目錄的保留路徑中,您可以提出支援票證,以取得此數據的暫時存取權,以將其移至另一個位置。

計算需求

當您處理磁碟區時,若不是在使用 Azure Databricks 使用者介面,例如目錄檢視器,那麼您必須使用 SQL 倉儲或執行 Databricks Runtime 13.3 LTS 或更高版本的叢集。

限制

您必須使用已啟用 Unity Catalog 的計算資源來與 Unity Catalog 磁碟區互動。 磁碟區無法支援所有工作負載。

下表概述以 Databricks Runtime 版本為基礎的 Unity 目錄磁碟區限制:

Databricks 執行環境版本 限制
所有支援的 Databricks 執行環境版本
  • 磁碟區不支援分發給執行者的 dbutils.fs 命令。
  • Unity 目錄 UDF 不支援存取磁碟區檔案路徑。
  • 您無法從 RDD 存取磁碟區。
  • 您無法使用磁碟區中儲存的 JAR 與舊版 spark-submit 工作搭配使用。 請使用 JAR 任務,而非其他選項。 請參閱JAR 相關工作任務
  • 您無法定義在 wheel 或 JAR 檔案內透過卷路徑存取其他庫的相依性。
  • 您無法使用 /Volumes/<catalog-name>/Volumes/<catalog-name>/<schema-name> 模式列出 Unity 目錄物件。 您必須使用包含磁碟區名稱的完整限定路徑,格式為 Volumes/<catalog-name>/<schema-name>/<volume-name>。 例如,dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • REST API 的 DBFS 端點不支援磁碟區路徑。
  • %sh mv 不支援在磁碟區之間移動檔案。 請改用 dbutils.fs.mv%sh cp
  • 您無法建立具有磁碟區的自訂 Hadoop 檔案系統。 例如,使用 new Path("dbfs:/Volumes/main/default/test-volume/file.txt") 建立 org.apache.hadoop.fs.path 物件將無法運作。
  • 在符合 FedRAMP 規範的 Azure Government 區域或工作區中無法使用磁碟區。
  • 您必須在 Azure Data Factory 資料庫配置面板中使用帶有 dbfs:/ 格式的路徑,例如,dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file
14.3 LTS 及更高版本
  • 在具有專用存取模式的計算上(先前為單一使用者存取模式),您無法從 Scala 中的線程和子進程存取磁碟區。
14.2 和以下版本
  • 在以標準存取模式設定的計算上(先前稱為共用存取模式),您無法使用 UDF 來存取磁碟區。
    • Python 或 Scala 都能從驅動程式存取 FUSE,但無法從執行程式存取 FUSE。
    • 執行 I/O 作業的 Scala 程式代碼可以在驅動程式上執行,但不能在執行程式上執行。
  • 在以專用存取模式設定的計算上,不支援 Scala 中的 FUSE、使用磁碟區路徑存取數據的 Scala IO 程式代碼,或 Scala UDF。 專用存取模式支援 Python UDF 函數。

後續步驟

下列文章提供關於處理磁碟區的進一步資訊: