什麼是 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 目錄磁碟區互動。 磁碟區不支援所有工作負載。
注意
磁碟區不支援 dbutils.fs
散發至執行程式命令。
適用下列限制:
在 Databricks Runtime 14.3 LTS 和更新版本中:
- 在單一使用者使用者叢集上,您無法從 Scala 中的線程和子進程存取磁碟區。
在 Databricks Runtime 14.2 和以下版本:
- 在以共用存取模式設定的計算上,您無法使用 UDF 來存取磁碟區。
- Python 或 Scala 都能從驅動程式存取 FUSE,但無法從執行程式存取 FUSE。
- 執行 I/O 作業的 Scala 程式代碼可以在驅動程式上執行,但不能在執行程式上執行。
- 在以單一使用者存取模式設定的計算上,不支援 Scala 中的 FUSE、使用磁碟區路徑或 Scala UDF 存取數據的 Scala IO 程式代碼。 單一使用者存取模式支援 Python UDF。
在所有支援的 Databricks 運行時間版本上:
Unity 目錄 UDF 不支援存取磁碟區檔案路徑。
您無法從 RDD 存取磁碟區。
您無法搭配儲存在磁碟區中的 JAR 使用 spark-submit。
您無法定義透過轉輪或 JAR 檔案內磁碟區路徑存取之其他連結庫的相依性。
您無法使用
/Volumes/<catalog-name>
或/Volumes/<catalog-name>/<schema-name>
模式列出 Unity 目錄物件。 您必須使用包含磁碟區名稱的完整路徑。REST API 的 DBFS 端點不支援磁碟區路徑。
您無法將磁碟區指定為叢集記錄傳遞的目的地。
%sh mv
不支援在磁碟區之間移動檔案。 請改用dbutils.fs.mv
或%sh cp
。您無法建立具有磁碟區的自訂 Hadoop 檔案系統,這表示不支援下列專案:
import org.apache.hadoop.fs.Path val path = new Path("dbfs:/Volumes/main/default/test-volume/file.txt") val fs = path.getFileSystem(sc.hadoopConfiguration) fs.listStatus(path)
在符合 FedRAMP 規範的 Azure Government 區域或工作區中無法使用磁碟區。
您必須使用路徑格式搭配
dbfs:/
Azure Data Factory 連結庫組態面板中的配置。 例如:dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file
。