Klona parquet- och isbergstabeller 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 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älltabell refererar till tabellen och datafilerna som ska klonas, medan 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 grunda 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> 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 isbergstabeller

Oavsett om du använder djupa eller grunda kloner kan ändringar som tillämpas på måltabellen efter klonen 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å deltatabeller som mål.

Följande ytterligare begränsningar gäller när du använder klon med parquet- och isbergstabeller:

  • Du måste registrera Parquet-tabeller med partitioner i en katalog, till exempel 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 isbergstabeller med partitioner som definierats för trunkerade kolumner:
    • I Databricks Runtime 12.2 LTS och nedan är stringden enda trunkerade kolumntypen som stöds .
    • 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, eventuella schemaändringar och datafiler som skrivs lokalt till den klonade tabellen åsidosättas.
  • Unity Catalog stöder inte grunda kloner.

Kommentar

I Databricks Runtime 11.3 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.