什麼是 Unity 目錄磁碟區?
磁碟區是 Unity 目錄物件,可對非表格式數據集啟用治理。 磁碟區代表雲端物件儲存位置中的記憶體邏輯磁碟區。 磁碟區提供存取、儲存、控管和組織檔案的功能。
雖然數據表提供表格式數據集的控管,但磁碟區會透過非表格式數據集新增治理。 您可以使用磁碟區,以任何格式儲存和存取檔案,包括結構化、半結構化和非結構化數據。
Databricks 建議使用磁碟區來管理所有非表格式數據的存取權。 如同數據表,磁碟區可以管理或外部。
重要
您無法使用磁碟區作為資料表的位置。 磁碟區僅供路徑型數據存取使用。 當您想要在 Unity 目錄中使用表格式資料時,請使用資料表。
下列文章提供有關使用磁碟區的詳細資訊:
- 建立和管理磁碟區。
- 管理磁碟區中的檔案。
- 探索記憶體並尋找資料檔。
- 受控磁碟區與外部磁碟區。
- 磁碟區有哪些許可權?。
注意
當您使用磁碟區時,除非您使用 Azure Databricks UI,例如目錄總管,否則您必須使用 SQL 倉儲或執行 Databricks Runtime 13.3 LTS 或更新版本叢集。
什麼是受控磁碟區?
受控磁碟區是在包含架構的受控儲存位置內建立的 Unity 目錄控管記憶體磁碟區。 請參閱 在 Unity 目錄中指定受控儲存位置。
受控磁碟區允許建立受控記憶體以處理檔案,而不需要外部位置和記憶體認證的額外負荷。 建立受控磁碟區時,您不需要指定位置,而且受控磁碟區中數據的所有檔案存取都是透過 Unity 目錄所管理的路徑。
什麼是外部磁碟區?
外部磁碟區是使用 Unity 目錄控管的記憶體認證,針對外部位置內的目錄註冊的 Unity 目錄控管記憶體磁碟區。
Unity 目錄不會管理外部磁碟區中檔案的生命週期和配置。 當您卸除外部磁碟區時,Unity 目錄不會刪除基礎數據。
哪些路徑可用來存取磁碟區中的檔案?
磁碟區位於 Unity 目錄三層命名空間的第三層 (catalog.schema.volume
):
無論您使用 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 Runtime 13.3 LTS 和更新版本才支援磁碟區。 在 Databricks Runtime 12.2 LTS 和更新版本中,針對路徑的作業 /Volumes
可能會成功,但只能將數據寫入附加至計算叢集的暫時記憶體磁碟,而不是如預期般將數據保存到 Unity 目錄磁碟區。
重要
如果您已將預先存在的數據儲存在 DBFS 根目錄的保留路徑中,您可以提出支援票證,以取得此數據的暫時存取權,以將其移至另一個位置。
限制
您必須使用已啟用 Unity 目錄的計算來與 Unity 目錄磁碟區互動。 磁碟區不支援所有工作負載。
下表概述以 Databricks Runtime 版本為基礎的 Unity 目錄磁碟區限制:
Databricks 執行環境版本 | 限制 |
---|---|
14.3 LTS 和更新版本 | - 在單一使用者叢集上,您無法從 Scala 中的線程和子進程存取磁碟區。 |
14.2 和以下版本 | - 在以共用存取模式設定的計算上,您無法使用 UDF 來存取磁碟區。 - Python 或 Scala 都能從驅動程式存取 FUSE,但無法從執行程式存取 FUSE。 - 執行 I/O 作業的 Scala 程式代碼可以在驅動程式上執行,但無法在執行程式上執行。 - 在以單一使用者存取模式設定的計算上,Scala、Scala IO 程式代碼使用磁碟區路徑或 Scala UDF 存取數據不支援 FUSE。 單一使用者存取模式支援 Python UDF。 |
所有支援的 Databricks 執行時間版本 | - 磁碟區不支援分派給執行者的 dbutils.fs 命令。- Unity 目錄 UDF 不支援存取磁碟區檔案路徑。 - 您無法從 RDD 存取磁碟區。 - 您無法搭配儲存在磁碟區中的 JAR 使用 spark-submit。 - 您無法定義透過滾輪或 JAR 檔案內磁碟區路徑存取之其他連結庫的相依性。 - 您無法使用 /Volumes/<catalog-name> 或 /Volumes/<catalog-name>/<schema-name> 模式列出 Unity Catalog 物件。 您必須使用包含磁碟區名稱的完整限定路徑,格式為 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 。 |