Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab Databricks Runtime 14.3 LTS sind Iceberg-Lesezugriffe verfügbar. Damit können Sie Delta Lake-Tabellen so konfigurieren, dass Iceberg-Metadaten automatisch generiert werden, sodass Iceberg-Clients Delta Lake-Daten lesen können, ohne Dateien neu schreiben zu müssen.
Sie können eine externe Verbindung so konfigurieren, dass Unity Catalog als Iceberg-Katalog fungiert. Siehe Access Azure Databricks-Tabellen von Apache Iceberg-Clients.
So funktionieren Lesevorgänge in Iceberg
Sowohl Delta Lake als auch Apache Iceberg bestehen aus Parkettdatendateien und einer Metadatenebene. Durch Aktivieren von Iceberg-Lesevorgängen werden Ihre Delta Lake-Tabellen so konfiguriert, dass Iceberg-Metadaten asynchron generiert werden, ohne Daten neu zu schreiben, sodass Iceberg-Clients sie lesen können. Eine einzelne Kopie der Datendateien unterstützt mehrere Formate.
Berücksichtigen Sie bei der Verwendung von Iceberg-Lesevorgängen Folgendes:
- Delta Lake-Tabellen mit aktivierten Iceberg-Lesezugriffen verwenden Zstandard anstelle von Snappy als Komprimierungs-Codec für zugrunde liegende Parquet-Datendateien.
- Die Iceberg-Metadatengenerierung wird asynchron auf der Berechnung ausgeführt, die zum Schreiben von Daten in Delta Lake-Tabellen verwendet wird, wodurch die Ressourcenauslastung des Treibers erhöht werden kann.
Dokumentation zur Legacy-UniForm-Tabellenfunktion finden Sie unter Legacy UniForm IcebergCompatV1IcebergCompatV1.
Anforderungen
Um Iceberg-Lesevorgänge zu aktivieren, müssen die folgenden Anforderungen erfüllt sein:
- Die Tabelle "Delta Lake" muss im Unity-Katalog registriert werden. Sowohl verwaltete als auch externe Tabellen werden unterstützt.
- Für die Tabelle muss die Spaltenzuordnung aktiviert sein. Weitere Informationen finden Sie unter Rename and drop columns with Delta Lake column mapping (Umbenennen und Löschen von Spalten mit Delta Lake-Spaltenzuordnung).
- Sobald
IcebergCompatV2für eine Tabelle aktiviert wurde, können Sie diecolumnMappingTabellenfunktion nicht entfernen.
- Sobald
- Die Delta Lake-Tabelle muss
minReaderVersion>= 2 undminWriterVersion>= 7 haben. Siehe Delta Lake Featurekompatibilität und Protokolle. - Schreibvorgänge in die Tabelle müssen Databricks Runtime 14.3 LTS oder höher verwenden.
Hinweis
Sie können Löschvektoren für eine Tabelle mit aktivierten Iceberg-Lesevorgängen nicht aktivieren.
Verwenden Sie REORG, um Löschvektoren zu deaktivieren und vollständig zu entfernen und gleichzeitig Iceberg-Lesezugriffe für eine vorhandene Tabelle zu aktivieren, in der Löschvektoren aktiviert sind. Siehe Aktivieren oder Aktualisieren der Iceberg-Leseunterstützung mithilfe von REORG.
Iceberg-Lesevorgänge aktivieren (UniForm)
Hinweis
Das Aktivieren von Iceberg-Lesezugriffen fügt das IcebergCompatV2 Feature für das Schreibprotokoll hinzu und aktualisiert das Writer-Protokoll. Nur Clients, die dieses Tabellenfeature unterstützen, können in die Tabelle schreiben. Dies kann sich auf die Kompatibilität mit externen Delta Lake-Clients auswirken. Siehe Delta Lake Featurekompatibilität und Protokolle.
Wenn Sie Iceberg-Lesevorgänge zum ersten Mal aktivieren, beginnt die asynchrone Metadatengenerierung. Diese Aufgabe muss abgeschlossen werden, bevor externe Clients die Tabelle mithilfe von Iceberg abfragen können. Weitere Informationen finden Sie unter Überprüfen des Status der Generierung von Iceberg-Metadaten.
Eine Liste der Einschränkungen finden Sie unter Einschränkungen.
Während der Tabellenerstellung
Die Spaltenzuordnung wird automatisch aktiviert, wenn Sie bei der Tabellenerstellung Lesezugriffe für Iceberg aktivieren:
CREATE TABLE T(c1 INT) TBLPROPERTIES(
'delta.columnMapping.mode' = 'id',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Databricks empfiehlt, sie für Kompatibilitätszwecke festzulegen delta.columnMapping.mode = id . Weitere Informationen finden Sie unter Rename and drop columns with Delta Lake column mapping (Umbenennen und Löschen von Spalten mit Delta Lake-Spaltenzuordnung).
In einer vorhandenen Tabelle
So aktivieren Sie Iceberg-Lesevorgänge in einer vorhandenen Tabelle auf Databricks Runtime 15.4 LTS und höher:
ALTER TABLE table_name SET TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Ausführliche Informationen zum name Spaltenzuordnungsmodus finden Sie unter Spaltenzuordnungsmodi.
Aktivieren oder Aktualisieren der Iceberg-Leseunterstützung mithilfe von REORG
Verwenden Sie REORG, um Iceberg-Lesevorgänge zu aktivieren, wenn eine der folgenden Bedingungen zutrifft:
- Sie haben Löschvektoren für Ihre Tabelle aktiviert.
- Sie haben zuvor die
IcebergCompatV1-Version von UniForm Iceberg aktiviert. - Sie müssen aus Iceberg-Engines lesen, die keine Parquet-Dateien im Hive-Stil unterstützen, wie Athena oder Redshift.
Um Iceberg-Lesevorgänge zu aktivieren und zugrunde liegende Datendateien neu zu schreiben, verwenden Sie REORG wie im folgenden Beispiel:
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));
Überprüfen, ob Iceberg-Lesevorgänge aktiviert sind
Verwenden Sie DESCRIBE EXTENDED, um zu überprüfen, ob die Funktion „Iceberg-Lesevorgänge (UniForm)“ für Ihre Tabelle aktiviert ist.
DESCRIBE EXTENDED catalog_name.schema_name.table_name;
Suchen Sie in der Ausgabe nach dem Delta Uniform Iceberg-Abschnitt . Wenn dieser Abschnitt vorhanden ist, sind Iceberg-Lesevorgänge in Ihrer Tabelle aktiviert.
Alternativ kannst du auch SHOW TBLPROPERTIES verwenden:
SHOW TBLPROPERTIES catalog_name.schema_name.table_name;
Überprüfen Sie die folgenden Eigenschaften:
delta.enableIcebergCompatV2 = truedelta.universalFormat.enabledFormats = iceberg
Wenn beide Eigenschaften mit diesen Werten vorhanden sind, sind Iceberg-Lesevorgänge aktiviert.
Iceberg-Lesevorgänge deaktivieren
Sie können Iceberg-Lesevorgänge deaktivieren, indem Sie die delta.universalFormat.enabledFormats Tabelleneigenschaft aufheben:
ALTER TABLE table_name UNSET TBLPROPERTIES ('delta.universalFormat.enabledFormats');
Upgrades auf Delta Lake-Lese- und Writer-Protokollversionen können nicht rückgängig gemacht werden. Siehe Delta Lake Featurekompatibilität und Protokolle.
Iceberg-Metadatengenerierung
Azure Databricks löst die Metadatengenerierung asynchron aus, nachdem eine Delta Lake-Schreibtransaktion abgeschlossen wurde. Dieser Metadatengenerierungsprozess verwendet denselben Compute, der die Delta Lake-Transaktion abgeschlossen hat.
Sie können die Generierung von Iceberg-Metadaten auch manuell auslösen. Weitere Informationen finden Sie unter Manuelles Auslösen der Iceberg-Metadatenkonvertierung.
Um Schreibwartezeiten zu vermeiden, die mit der Metadatengenerierung verknüpft sind, können Delta Lake-Tabellen mit häufigen Commits mehrere Delta Lake-Commits in einem einzigen Commit für Iceberg-Metadaten gruppieren.
Delta Lake stellt sicher, dass nur ein Metadatengenerierungsprozess für eine bestimmte Computeressource ausgeführt wird. Commits, die einen zweiten gleichzeitigen Metadatengenerierungsprozess auslösen würden, werden zwar erfolgreich in Delta Lake committet, lösen jedoch keine asynchrone Iceberg-Metadatengenerierung aus. Dies verhindert kaskadierende Wartezeiten bei der Generierung von Metadaten für Workloads mit häufigen Commits (Sekunden bis Minuten zwischen Commits).
Weitere Informationen finden Sie unter Delta- und Iceberg-Tabellenversionen.
Delta- und Iceberg-Tabellenversionen
Sowohl Delta Lake als auch Iceberg ermöglichen Zeitreiseabfragen mithilfe von Tabellenversionen oder Zeitstempeln, die in Tabellenmetadaten gespeichert sind.
Versionen von Delta-Lake-Tabellen stimmen nicht zwangsläufig mit Iceberg-Versionen überein, weder anhand des Commit-Zeitstempels noch anhand der Versions-ID. Verwenden Sie die entsprechenden Tabelleneigenschaften, um zu überprüfen, welche Version einer Delta Lake-Tabelle eine bestimmte Version einer Iceberg-Tabelle entspricht. Weitere Informationen finden Sie unter Überprüfen des Status der Generierung von Iceberg-Metadaten.
Überprüfen des Status der Generierung von Iceberg-Metadaten
Das Aktivieren von Iceberg-Lesevorgängen in einer Tabelle fügt die folgenden Felder zu Unity-Katalog- und Iceberg-Tabellenmetadaten hinzu, um den Status der Metadatengenerierung nachzuverfolgen:
| Metadatenfeld | Beschreibung |
|---|---|
converted_delta_version |
Die neueste Version der Delta Lake-Tabelle, für die Iceberg-Metadaten erfolgreich generiert wurden. |
converted_delta_timestamp |
Der Zeitstempel des neuesten Delta Lake-Commits, für den Iceberg-Metadaten erfolgreich generiert wurden. |
In Azure Databricks können Sie diese Metadatenfelder wie folgt überprüfen:
- Der Abschnitt
Delta Uniform Iceberg, der vonDESCRIBE EXTENDED table_namezurückgegeben wird, wird überprüft. - Überprüfen von Tabellenmetadaten mit dem Katalog-Explorer
Informationen zum Überprüfen von Tabelleneigenschaften außerhalb von Azure Databricks finden Sie in der Dokumentation für Ihren Iceberg-Reader-Client. Für OSS Apache Spark können Sie diese Eigenschaften mithilfe der folgenden Syntax anzeigen:
SHOW TBLPROPERTIES <table-name>;
Manuelles Auslösen der Iceberg-Metadatenkonvertierung
Sie können die Iceberg-Metadatengenerierung manuell für die neueste Version der Delta Lake-Tabelle auslösen. Dieser Vorgang wird synchron ausgeführt. Nach Abschluss des Vorgangs spiegeln die in Iceberg verfügbaren Tabelleninhalte die neueste Version der Delta Lake-Tabelle wider, die beim Start des Konvertierungsprozesses verfügbar ist.
Dieser Vorgang ist unter normalen Bedingungen nicht erforderlich. Verwenden Sie sie, um nach Folgendem eine Wiederherstellung durchzuführen:
- Ein Cluster wird beendet, bevor die Metadaten erfolgreich automatisch generiert wurden.
- Ein Fehler oder Auftragsfehler unterbricht die Generierung der Metadaten.
- Ein Client, der die Erstellung von UniForm Iceberg-Metadaten nicht unterstützt, schreibt in die Delta Lake-Tabelle.
Verwenden Sie die folgende Syntax, um die Iceberg-Metadatengenerierung manuell auszulösen:
MSCK REPAIR TABLE <table-name> SYNC METADATA
Siehe REPAIR TABLE.
Lesen von Iceberg mithilfe eines JSON-Metadatenpfads
Einige Iceberg-Clients, z. B. BigQuery, erfordern, dass Sie einen Pfad zu versionsierten Metadatendateien bereitstellen, um externe Iceberg-Tabellen zu registrieren. Jedes Mal, wenn Azure Databricks eine neue Version der Delta Lake-Tabelle in Iceberg konvertiert, wird eine neue JSON-Metadatendatei erstellt.
Ausführliche Informationen zur Konfiguration finden Sie in der Dokumentation für Ihren spezifischen Iceberg Reader-Client.
Delta Lake speichert Iceberg-Metadaten unter dem Tabellenverzeichnis mithilfe des folgenden Musters:
<table-path>/metadata/<version-number>-<uuid>.metadata.json
In Azure Databricks können Sie diesen Metadatenspeicherort wie folgt überprüfen:
- Der Abschnitt
Delta Uniform Iceberg, der vonDESCRIBE EXTENDED table_namezurückgegeben wird, wird überprüft. - Überprüfen von Tabellenmetadaten mit dem Katalog-Explorer
Wichtig
Pfadbasierte Iceberg-Reader-Clients erfordern möglicherweise das manuelle Updaten und Aktualisieren von Metadaten-JSON-Pfaden, um aktuelle Tabellenversionen zu lesen. Beim Abfragen von Iceberg-Tabellen mit veralteten Versionen können Fehler auftreten, da Parquet-Datendateien mit VACUUM aus der Delta-Lake-Tabelle entfernt werden.
Begrenzungen
Für alle Tabellen mit aktivierten Iceberg-Lesevorgängen gelten die folgenden Einschränkungen:
- Iceberg-Clientunterstützung ist schreibgeschützt. Schreibvorgänge werden nicht unterstützt.
- Iceberg Reader-Clients können individuelle Einschränkungen haben, unabhängig von der Azure Databricks-Unterstützung für Iceberg-Lesevorgänge. Weitere Informationen finden Sie in der Dokumentation für Ihren ausgewählten Client.
- Löschvektoren werden für Iceberg v2-Lesevorgänge nicht unterstützt. Apache Iceberg v3 unterstützt jedoch Löschvektoren. Siehe Verwenden von Apache Iceberg v3-Features und Löschvektoren in Databricks.
- Iceberg-Lesezugriffe können nicht für materialisierte Ansichten oder Streamingtabellen aktiviert werden, die
IcebergCompatV2verwenden. Für pipeline-verwaltete materialisierte Ansichten und Streamingtabellen können Sie den externen Iceberg-Zugriff stattdessen mitIcebergCompatV3aktivieren. Dieses Feature befindet sich in der Public Preview. Siehe Aktivieren des externen Datenzugriffs für Streamingtabellen und materialisierte Ansichten. - Auf die Tabelle "Delta Lake" muss über den Namen (nicht pfad) zugegriffen werden, um die Iceberg-Metadatengenerierung automatisch auszulösen.
- Delta Lake-Tabellen mit aktiviertem Iceberg-Lesezugriff unterstützen keine
VOID-Typen. - Einige Delta Lake-Tabellenfunktionen, die von Iceberg-Lesevorgängen verwendet werden, werden von einigen OpenSharing-Reader-Clients nicht unterstützt. Siehe Was ist OpenSharing?.
- Die Empfänger von Open Sharing können Delta-Lake-Tabellen, für die Iceberg-Lesezugriffe aktiviert sind, über die Iceberg-REST-Katalog-API als Iceberg-Tabellen lesen. Dieses Feature befindet sich in der Public Preview. Siehe "Freigabe für externe Iceberg-Clients aktivieren".
- Der Legacy-Change-Data-Feed funktioniert für Delta-Clients, wenn Iceberg-Lesezugriffe aktiviert sind, wird jedoch in Iceberg nicht unterstützt. Siehe Legacy-Änderungsdatenfeed für Delta Lake.