Dela via


Klona Parquet- och Iceberg-tabeller stegvis till Delta Lake

Du kan använda klonfunktioner i Azure Databricks för att stegvis konvertera data från Parquet- eller Iceberg-datakällor till hanterade eller externa Delta-tabeller.

Azure Databricks-klonen för Parquet och Iceberg kombinerar funktioner som används för att klona Delta-tabeller och konvertera tabeller till Delta Lake. Den här artikeln beskriver användningsfall och begränsningar för den här funktionen och innehåller exempel.

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Kommentar

Den här funktionen kräver Databricks Runtime 11.3 LTS eller senare.

När du ska använda klon för inkrementell inmatning av Parquet- eller Iceberg-data

Azure Databricks innehåller ett antal alternativ för att mata in data i lakehouse. Databricks rekommenderar att du använder klon för att mata in Parquet- eller Iceberg-data i följande situationer:

Kommentar

Termen källtabellen refererar till tabellen och datafilerna som ska klonas, medan den måltabellen refererar till deltatabellen som skapats eller uppdaterats av åtgärden.

  • Du utför en migrering från Parquet eller Iceberg till Delta Lake, men du måste fortsätta använda källtabeller.
  • Du måste upprätthålla en inmatningssynkronisering mellan en måltabell och en produktionskälltabell som tar emot tillägg, uppdateringar och borttagningar.
  • Du vill skapa en ACID-kompatibel ögonblicksbild av källdata för rapportering, maskininlärning eller batch-ETL.

Vad är syntaxen för klon?

Clone for Parquet och Iceberg använder samma grundläggande syntax som används för att klona Delta-tabeller, med stöd för grunda och djupa kloner. Mer information finns i Klona typer.

Databricks rekommenderar att du använder klon stegvis för de flesta arbetsbelastningar. Klonstöd för Parquet och Iceberg använder SQL-syntax.

Kommentar

Klon för Parquet och Iceberg har olika krav och garantier än antingen klona eller konvertera till Delta. Se Krav och begränsningar för kloning av Parquet- och Iceberg-tabeller.

Om du vill klona en Parquet- eller Iceberg-tabell med hjälp av en filsökväg använder du följande syntax:

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

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

Om du vill ytklona en Parquet- eller Iceberg-tabell genom en filsökväg använder du följande syntax:

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`;

Du kan också skapa djupa eller grunda kloner för Parquet-tabeller som är registrerade i metaarkivet, enligt följande exempel:

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

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

Krav och begränsningar för kloning av Parquet- och Iceberg-tabeller

Oavsett om du använder djupa eller grunda kloner kan ändringar som tillämpas på måltabellen efter att kloningen är genomförd inte synkroniseras tillbaka till källtabellen. Inkrementell synkronisering med klon är enkelriktad, vilket gör att ändringar i källtabeller automatiskt kan tillämpas på Delta-tabeller som mål.

Följande ytterligare begränsningar gäller när du använder klon för Parquet- och Iceberg-tabeller:

  • Du måste registrera Parquet-tabeller med partitioner i en katalog, till exempel Unity Catalog eller det äldre Hive-metaarkivet innan du klonar och använder tabellnamnet för att identifiera källtabellen. Du kan inte använda sökvägsbaserad klonsyntax för Parquet-tabeller med partitioner.
  • Du kan inte klona isbergstabeller som har genomgått partitionsutveckling.
  • Du kan inte klona Iceberg merge-on-read-tabeller som har upplevt uppdateringar, borttagningar eller sammanslagningar.
  • Följande är begränsningar för kloning av Iceberg-tabeller med partitioner som definierats på trunkerade kolumner.
    • I Databricks Runtime 12.2 LTS och nedan är den enda trunkerade kolumntypen som stöds string.
    • I Databricks Runtime 13.3 LTS och senare kan du arbeta med trunkerade kolumner av typer string, longeller int.
    • Azure Databricks stöder inte arbete med trunkerade kolumner av typen decimal.
  • Inkrementell klon synkroniserar schemaändringarna och egenskaperna från källtabellen. Alla schemaändringar och datafiler som skrivs direkt till den klonade tabellen åsidosättas.
  • Unity Catalog stöder inte ytliga kloner för Parquet- eller Iceberg-tabeller.
  • Du kan inte använda globmönster när du definierar en sökväg.

Kommentar

I Databricks Runtime 11.3 LTS samlar den här åtgärden inte in statistik på filnivå. Därför drar inte måltabeller nytta av att Delta Lake-data hoppar över. Statistik på filnivå samlas in i Databricks Runtime 12.2 LTS och senare.