共用方式為


以累加方式將 Parquet 和 Iceberg 數據表複製到 Delta Lake

您可以使用 Azure Databricks 複製功能,逐步將數據從 Parquet 或 Iceberg 數據源轉換為管理的或者外部的 Delta 數據表。

適用於 Parquet 和 Iceberg 的 Azure Databricks 複製結合了用來 複製 Delta 數據表的功能,將數據表轉換成 Delta Lake。 本文說明此功能的使用案例和限制,並提供範例。

重要

這項功能處於公開預覽狀態

注意

此功能需要 Databricks Runtime 11.3 LTS 或更新版本。

何時使用複製來累加擷取 Parquet 或 Iceberg 數據

Azure Databricks 提供數個選項,可將 數據內嵌至 Lakehouse。 Databricks 建議在下列情況下使用複製來內嵌 Parquet 或 Iceberg 數據:

注意

源數據表 一詞 是指要複製的數據表和數據檔,而 目標數據表 是指作業所建立或更新的 Delta 數據表。

  • 您正在將資料從 Parquet 或 Iceberg 移轉至 Delta Lake,但仍需要繼續使用源資料表。
  • 您必須維持僅限匯入的同步處理,在目標資料表與接收新增、更新和刪除操作的運行中資料來源表之間進行。
  • 您想要建立 源數據的 ACID 相容 快照集,以用於報告、機器學習或批次 ETL。

複製的語法為何?

Parquet 和 Iceberg 的複製會使用相同的基本語法來複製 Delta 數據表,並支援淺層和深層複製。 如需詳細資訊,請參閱 複製類型

Databricks 建議對大部分工作負載以累加方式使用複製。 Parquet 和 Iceberg 的複製支援使用 SQL 語法。

注意

Parquet 和 Iceberg 的複製品有不同於複製或轉換為 Delta 的需求和保證。 請參閱 複製 Parquet 和 Iceberg 數據表的需求和限制

若要使用檔案路徑深層複製 Parquet 或 Iceberg 數據表,請使用下列語法:

CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;

若要使用檔案路徑淺層複製 Parquet 或 Iceberg 數據表,請使用下列語法:

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE iceberg.`/path/to/data`;

您也可以為註冊至中繼資料庫的 Parquet 表格建立深層或淺層複本,如下列範例所示:

CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;

複製 Parquet 和 Iceberg 資料表的要求和限制

無論是使用深層或淺層複製,複製之後對目標數據表所做的變更,都無法與源數據表同步。 使用複製進行的增量同步是單向的,可讓來源資料表的變更自動套用至目標 Delta 資料表。

使用 Parquet 和 Iceberg 資料表進行克隆時,適用以下其他限制:

  • 您必須先將具備分區的 Parquet 數據表註冊到像 Unity Catalog 或舊版 Hive 中繼存放區此類的目錄中,然後再複製並使用表名稱來識別源數據表。 您無法針對具有資料分割的 Parquet 資料表使用路徑型複製語法。
  • 您無法複製具有分割演進經驗的 Iceberg 資料表。
  • 您無法複製那些曾經進行過更新、刪除或合併操作的 Iceberg 讀取合併資料表。
  • 以下是在被截斷的資料列上定義分區時,用於複製 Iceberg 資料表的限制:
    • 在 Databricks Runtime 12.2 LTS 和以下,唯一支援的截斷數據行類型是 string
    • 在 Databricks Runtime 13.3 LTS 和更新版本中,您可以使用 stringlongint類型的截斷欄位。
    • Azure Databricks 不支援使用類型為 decimal的截斷數據行。
  • 漸進式複製會從源表同步架構變更和屬性。 系統會覆寫任何直接寫入複製數據表的架構變更和數據檔。
  • Unity Catalog 不支援 Parquet 或 Iceberg 表格的淺層複製。
  • 在定義路徑時,您無法使用 glob 模式。

注意

在 Databricks Runtime 11.3 LTS 中,這項作業不會收集檔案層級統計數據。 因此,目標表無法受益於 Delta Lake 的資料略過功能。 檔案層級統計數據會在 Databricks Runtime 12.2 LTS 和更新版本中收集。