適用於 Delta Lake 和 Apache Iceberg 的 Azure Databricks 中的 Unity 目錄受控數據表

此頁面描述 Delta Lake 和 Apache Iceberg 中的 Unity 目錄受控數據表,這是 Azure Databricks 中的預設和建議數據表類型。 這些資料表完全由 Unity Catalog 控管和最佳化,因為受管理的資料表會從您的讀取和寫入模式中學習,相較於 外部資料表外國資料表,提供效能、作業優勢,以及較低的儲存體和計算成本。 Unity 目錄會管理受控數據表的所有讀取、寫入、儲存和優化責任。 請參見 「將外部 Delta 資料表轉換為受管理的 Unity 目錄資料表」。

管理的資料表的資料檔會儲存在包含這些資料表的架構或目錄中。 請參閱 在 Unity 目錄中指定受控儲存位置。

Databricks 建議使用受控數據表來利用:

  • 降低記憶體和計算成本。
  • 跨所有客戶端類型加快查詢效能。
  • 自動數據表維護和優化。
  • 透過開啟的 API 保護非 Databricks 用戶端的存取。
  • 支援 Delta Lake 和 Iceberg 格式。
  • 自動升級至最新的平臺功能。

受控數據表允許從 Delta Lake 和 Iceberg 用戶端進行存取,以支援互作性。 透過開放 API 和憑證分發,Unity Catalog 可讓外部引擎,例如 Trino、DuckDB、Apache Spark、Daft 和 Iceberg REST 目錄整合的引擎,例如 Dremio,來存取受管理的資料表。 對於不支援開放 API 的外部用戶端,您可以使用 相容性模式 ,使用任何 Delta Lake 或 Iceberg 用戶端讀取受控資料表。 Delta Sharing 是開放原始碼通訊協定,可讓外部合作夥伴和平臺安全地控管數據共用。

您可以跨 Azure Databricks 支援的所有語言和產品,使用受控數據表。 您需要特定許可權,才能建立、更新、刪除或查詢受控數據表。 請參閱 在 Unity 目錄中管理許可權。

Note

本頁僅描述 Unity 目錄管理的資料表。 如需舊版Hive中繼存放區中的受控數據表,請參閱 舊版Hive中繼存放區中的資料庫物件

為何要使用 Unity 目錄受控數據表?

Unity Catalog 管理的表格優化儲存成本與查詢速度,並允許與第三方工具的 Delta Lake 與 Apache Iceberg 互通。 為了簡化資料管理與效能,這些管理型資料表採用 AI 技術,如檔案大小壓縮與智慧統計收集。

以下功能僅適用於 Unity Catalog 受控資料表,不適用於外部資料表和外來資料表:

Feature Benefits 預設啟用? 可配置?
目錄提交 支援跨資料表的 多語句交易 、透過直接從 Unity 目錄提供元資料以加速查詢規劃、可強制執行的結構與約束變更,以及外部引擎的安全寫入。 否。 是的。
設定 delta.feature.catalogManaged 表格屬性。 請參見啟用目錄提交。
預測性優化 預測優化會自動優化你的資料配置與計算,利用 AI 進行,無需手動維護操作。 Databricks 建議針對所有受控資料表啟用預測優化,以降低儲存體和計算成本。
預測優化會自動執行:
是,適用於 2024 年 11 月 11 日或之後建立的所有新帳戶。
對於活期帳戶,Azure Databricks 正逐步預設啟用預測優化功能。 請參閱 驗證是否啟用預測優化
是的。 請參閱啟用預測最佳化。
多陳述式交易 可讓您在一個或多個資料表上執行多個 SQL 陳述式,並作為單一原子性提交,且提供 ACID 保證。 所有變更要麼一起成功,要麼一起回滾。 用於關鍵任務倉儲工作負載中的 儲存程序SQL 腳本
寫入受管理 Delta Lake 資料表的交易已在 公開預覽中。
寫入受管理 Apache Iceberg 資料表的交易則在 私人預覽中。
否。 是的。 BEGIN ATOMIC ... END;用於非互動交易或BEGIN TRANSACTION; ... COMMIT;互動交易。 請參見 交易模式
自動液體聚集 對於具有 預測優化的資料表,自動液體分群讓Azure Databricks能智慧地選擇分群鍵。 隨著查詢模式變更,Azure Databricks 會自動更新叢集索引鍵,以改善效能並降低成本。 否。 是的。 請參閱 啟用液體群集
中繼資料快取 交易中繼資料的記憶體內快取可將對儲存在雲端的交易記錄的請求降到最低,從而增強查詢效能。 是的。 否。 中繼資料快取一律會針對受管理資料表啟用。
全文搜尋索引 全文搜尋索引加速了對受管理資料表文字欄的子字串與關鍵字查詢。 當索引套用時,Azure Databricks 會跳過無法包含相符資料列的檔案,減少掃描的資料量。
全文搜尋索引可使用 searchisearch 函式加速子字串和單字查詢。
全文搜尋索引目前為 Beta 版本,且需 Databricks Runtime 18.2 及以上版本。
否。 是的。 使用 CREATE INDEX (次要)或 CREATE SEARCH INDEX (全文)來創作。
命令後 DROP TABLE 自動刪除檔案 如果你DROP管理資料表,Azure Databricks會在8天後刪除雲端儲存中的資料,以降低儲存成本。 對於外部資料表,你必須手動從儲存桶中刪除檔案。 是的。 否。 對於受管理的資料表,檔案一律會在 8 天後自動刪除。

使用外部系統存取 Databricks 數據

受控資料表允許從 Delta Lake 和 Iceberg 用戶端存取,以支援 互通性 。 透過開放式 API 和憑證自動販賣,Unity 目錄可讓外部引擎 (例如 Trino、DuckDB、Apache Spark、Daft) 和 Iceberg REST 目錄整合引擎 (例如 Dremio 和 Snowflake) 存取受控資料表。 請參閱整合以取得支援的外部引擎清單,若未包含在此清單中,請檢查引擎的說明文件。

下列開放 API 提供外部系統對 Unity 目錄受控資料表的存取權:

  • Unity REST API:提供 Delta 用戶端對受管理 Delta 資料表的讀寫及建立存取權限。
  • Iceberg REST 目錄(IRC):提供 Iceberg 用戶端對受管 Iceberg 表的讀寫和建立權限,同時在啟用 Iceberg 讀取功能(UniForm)後,提供對 Delta 表的唯讀存取。

這兩個 API 都支援 認證發放,這會提供臨時的範疇認證,以繼承請求 Azure Databricks 主體的權限,維持治理功能和安全性控制。

此外, Delta Sharing 是一種開源協議,允許對外部合作夥伴和平台進行安全且受監管的數據訪問。 您可以使用 Delta Sharing 授與合作夥伴暫時的唯讀存取權。

所有對受管理資料表的讀取和寫入都必須使用資料表名稱以及目錄和結構描述名稱(如果它們存在)。 例如: catalog_name.schema_name.table_name 。 不支援對 Unity 目錄受控資料表的路徑型存取 ( 相容模式除外),因為它會略過 Unity 目錄存取控制,並防止受控資料表功能正常運作。

建立受控資料表

若要建立管理資料表,您必須具備:

  • USE SCHEMA 在數據表的父架構上。
  • USE CATALOG 在資料表的父目錄上。
  • CREATE TABLE 在數據表的父架構上。

使用下列 SQL 語法,使用 SQL 建立空的受控數據表。 替換占位符值:

  • <catalog-name>:將包含資料表的目錄名稱。
  • <schema-name>:包含數據表的架構名稱。
  • <table-name>:數據表的名稱。
  • <column-specification>:每個數據行的名稱和數據類型。
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

為了維護讀取和寫入的效能,Azure Databricks 會定期執行作業,以優化受控 Iceberg 數據表元數據。 此工作是使用無伺服器運算來執行,其對 Iceberg 資料表具有 MODIFY 許可權。 此操作只寫入資料表的元數據,計算系統只在操作期間管理資料表的權限。

Note

若要建立 Iceberg 資料表,請明確指定 USING iceberg。 否則,Azure Databricks 預設會建立 Delta Lake 數據表。

您可以從查詢結果或 DataFrame 寫入作業建立受控數據表。 下列文章示範一些可用來在 Azure Databricks 上建立受控數據表的模式:

刪除受管理的數據表

若要刪除受管理的資料表,您必須具有:

  • MANAGE 在數據表上,或者您必須是數據表擁有者。
  • USE SCHEMA 在數據表的父架構上。
  • USE CATALOG 在資料表的父目錄上。

若要卸除受控數據表,請執行下列 SQL 命令:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog 支援 UNDROP TABLE 命令來在 8 天內復原刪除的受管理資料表。 8 天後,Azure Databricks 會標示要從雲端租用戶刪除的基礎資料,並在自動化資料表維護期間移除檔案。 參見 UNDROP。