Inkrementelles Klonen von Parquet- und Iceberg-Tabellen zu Delta Lake
Sie können mithilfe der Azure Databricks-Klonfunktionalität Daten aus Parquet- oder Iceberg-Datenquellen inkrementell in verwaltete oder externe Delta-Tabellen konvertieren.
Die Azure Databricks-Klonfunktion für Parquet und Iceberg kombiniert Funktionalität zum Klonen von Delta-Tabellen und zum Konvertieren von Tabellen zu Delta Lake. In diesem Artikel werden Anwendungsfälle und Einschränkungen für dieses Feature beschrieben und Beispiele vorgestellt.
Wichtig
Dieses Feature befindet sich in der Public Preview.
Hinweis
Für dieses Feature wird Databricks Runtime 11.3 LTS oder höher benötigt.
Wann sollte die Klonfunktion für die inkrementelle Erfassung von Parquet- oder Iceberg-Daten verwendet werden?
Azure Databricks bietet eine Reihe von Optionen zum Erfassen von Daten in das Lakehouse. Databricks empfiehlt in den folgenden Situationen die Verwendung der Klonfunktion zum Erfassen von Parquet- oder Iceberg-Daten:
Hinweis
Der Begriff Quelltabelle bezieht sich auf die Tabelle und die Datendateien, die geklont werden sollen, während sich der Begriff Zieltabelle auf die Delta-Tabelle bezieht, die durch den Vorgang erstellt oder aktualisiert wird.
- Sie führen eine Migration von Parquet oder Iceberg zu Delta Lake durch, müssen aber weiterhin die Quelltabellen verwenden.
- Sie müssen eine reine Erfassungssynchronisierung zwischen einer Zieltabelle und einer Produktionsquelltabelle durchführen, mit der Anfügungen, Aktualisierungen und Löschungen empfangen werden.
- Sie möchten eine ACID-konforme Momentaufnahme von Quelldaten für Berichterstellung, maschinelles Lernen oder Batch-ETL erstellen.
Wie lautet die Syntax der Klonfunktion?
Die Klonfunktion für Parquet und Iceberg verwendet dieselbe Basissyntax wie die Klonfunktion für Delta-Tabellen und unterstützt sowohl flache als auch tiefe Klone. Weitere Informationen finden Sie unter Klontypen.
Databricks empfiehlt für die meisten Workloads das inkrementelle Klonen. Die Klonfunktion für Parquet und Iceberg verwendet die SQL-Syntax.
Hinweis
Für das Klonen von Parquet- und Iceberg-Daten gelten andere Anforderungen und Garantien als für das Klonen oder Konvertieren zu Delta. Mehr dazu finden Sie unter Anforderungen und Einschränkungen für das Klonen von Parquet- und Iceberg-Tabellen.
Verwenden Sie die folgende Syntax, um einen tiefen Klon einer Parquet- oder Iceberg-Tabelle anhand eines Dateipfads zu erstellen:
CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;
CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;
Verwenden Sie die folgende Syntax, um einen flachen Klon einer Parquet- oder Iceberg-Tabelle anhand eines Dateipfads zu erstellen:
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`;
Sie können auch tiefe oder flache Klone für Parquet-Tabellen erstellen, die im Metastore registriert sind, wie in den folgenden Beispielen gezeigt:
CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;
CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;
Anforderungen und Einschränkungen für das Klonen von Parquet- und Iceberg-Tabellen
Unabhängig davon, ob Sie tiefe oder flache Klone verwenden, können Änderungen, die nach dem Klonen auf die Zieltabelle angewendet werden, nicht mehr mit der Quelltabelle synchronisiert werden. Die inkrementelle Synchronisierung mit der Klonfunktion ist unidirektional, d. h. Änderungen an den Quelltabellen werden automatisch auf die Delta-Zieltabellen angewendet.
Bei Verwendung der Klonfunktion für Parquet- und Iceberg-Tabellen gelten die folgenden zusätzlichen Einschränkungen:
- Sie müssen Parquet-Tabellen mit Partitionen in einem Katalog wie Unity Catalog oder der Vorversion des Hive-Metastore registrieren, bevor Sie sie klonen und den Tabellennamen zur Identifizierung der Quelltabelle verwenden. Sie können die pfadbasierte Klonsyntax nicht für Parquet-Tabellen mit Partitionen verwenden.
- Sie können keine Iceberg-Tabellen klonen, die eine Partitionsentwicklung durchlaufen haben.
- Sie können Iceberg-Merge-on-Read-Tabellen, bei denen Updates, Löschungen oder Zusammenführungen aufgetreten sind, nicht klonen.
- Im Folgenden sind Einschränkungen für das Klonen von Iceberg-Tabellen mit Partitionen aufgeführt, die für abgeschnittene Spalten definiert sind:
- In Databricks Runtime 12.2 LTS und früher wird nur der abgeschnittene Spaltentyp
string
unterstützt. - In Databricks Runtime 13.3 LTS und höher können Sie die abgeschnittenen Spaltentypen
string
,long
undint
verwenden. - Azure Databricks unterstützt das Arbeiten mit dem abgeschnittenen Spaltentyp
decimal
nicht.
- In Databricks Runtime 12.2 LTS und früher wird nur der abgeschnittene Spaltentyp
- Beim inkrementellen Klonen werden die Schemaänderungen und Eigenschaften der Quelltabelle synchronisiert. Alle Schemaänderungen und Datendateien, die direkt in die geklonte Tabelle geschrieben werden, werden außer Kraft gesetzt.
- Unity Catalog unterstützt keine flachen Klonen für Parquet- oder Eisberg-Tabelle.
- Beim Definieren eines Pfads können keine Globmuster verwendet werden.
Hinweis
In Databricks Runtime 11.3 LTS erfasst dieser Vorgang keine Statistiken auf Dateiebene. Daher profitieren Zieltabellen nicht vom Überspringen von Delta Lake-Daten. Statistiken auf Dateiebene werden in Databricks Runtime 12.2 LTS und höher erfasst.