以累加方式將 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 數據表使用複製時,適用下列其他限制:
- 您必須先向 Unity 目錄或舊版 Hive 中繼存放區等目錄註冊 Parquet 數據表,再複製並使用數據表名稱來 idenfity 源數據表。 您無法針對具有資料分割的 Parquet 資料表使用路徑型複製語法。
- 您無法複製具有分割演進經驗的 Iceberg 資料表。
- 您無法複製具有更新、刪除或合併的 Iceberg 合併讀取資料表。
- 以下是在截斷資料行上定義的分割區複製 Iceberg 資料表的限制:
- 在 Databricks Runtime 12.2 LTS 和以下,唯一支援的截斷數據行類型是
string
。 - 在 Databricks Runtime 13.3 LTS 和更新版本中,您可以使用 、 或
int
類型的string
long
截斷數據行。 - Azure Databricks 不支援使用 類型的
decimal
截斷數據行。
- 在 Databricks Runtime 12.2 LTS 和以下,唯一支援的截斷數據行類型是
- 累加複製會從源數據表同步架構變更和屬性。 系統會覆寫任何直接寫入複製數據表的架構變更和數據檔。
- Unity 目錄不支援 Parquet 或 Iceberg 數據表的淺層複製。
- 在定義路徑時,您無法使用 glob 模式。
注意
在 Databricks Runtime 11.3 LTS 中,這項作業不會收集檔案層級統計數據。 因此,目標數據表無法受益於 Delta Lake 數據略過。 檔案層級統計數據會在 Databricks Runtime 12.2 LTS 和更新版本中收集。