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.
Gilt für:
Databricks SQL
Databricks Runtime
Konvertiert eine bestehende Apache Parquet-Tabelle in eine Delta-Tabelle In-Place. Dieser Befehl listet alle Dateien im Verzeichnis auf, erstellt ein Delta Lake-Transaktionsprotokoll, in dem diese Dateien nachverfolgt werden, und leitet das Datenschema automatisch ab, indem die Fußzeilen aller Parquet-Dateien gelesen werden. Beim Konvertierungsprozess werden Statistiken erfasst, um die Abfrageleistung für die konvertierte Delta-Tabelle zu verbessern. Wenn Sie einen Tabellennamen angeben, wird auch der Metastore aktualisiert, um widerzuspiegeln, dass die Tabelle jetzt eine Delta-Tabelle ist.
Dieser Befehl unterstützt das Konvertieren von Apache Iceberg-Tabellen, deren zugrunde liegendes Dateiformat "Parkett" ist. In diesem Fall generiert der Konverter das Delta Lake-Transaktionsprotokoll basierend auf den systemeigenen Dateimanifest-, Schema- und Partitionierungsinformationen der Iceberg-Tabelle.
Syntax
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parameter
-
Entweder ein optional qualifizierter Tabellenbezeichner oder ein Pfad zu einem
parquet- odericeberg-Dateiverzeichnis. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten. Für Iceberg-Tabellen können Sie nur Pfade verwenden, da das Konvertieren verwalteter Iceberg-Tabellen nicht unterstützt wird. KEINE STATISTIKEN
Damit können Sie die Statistikerfassung während des Konvertierungsprozesses umgehen und die Konvertierung schneller abschließen. Nachdem die Tabelle in Delta Lake konvertiert wurde, können Sie
OPTIMIZE ZORDER BYverwenden, um das Datenlayout neu zu organisieren und Statistiken zu generieren.-
Partitioniert die erstellte Tabelle anhand der angegebenen Spalten. Wenn
table_nameein Pfad ist, istPARTITIONED BYfür partitionierte Daten erforderlich. Wenntable_nameein qualifizierter Tabellenbezeichner ist, ist diePARTITIONED BY-Klausel optional und die Partitionsspezifikation wird aus dem Metastore geladen. Bei beiden Ansätzen bricht der Konvertierungsprozess ab und löst eine Ausnahme aus, wenn die Verzeichnisstruktur nicht der bereitgestellten oder geladenenPARTITIONED BY-Spezifikation entspricht.Hinweis
In Databricks Runtime 11,1 und darunter ist
PARTITIONED BYein erforderliches Argument für alle partitionierten Daten.
Beispiele
Hinweis
Sie müssen keine Partitionsinformationen für Iceberg-Tabellen oder Tabellen bereitstellen, die für den Metastore registriert sind.
CONVERT TO DELTA database_name.table_name; -- only for Parquet tables
CONVERT TO DELTA parquet.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`
PARTITIONED BY (date DATE); -- if the table is partitioned
CONVERT TO DELTA iceberg.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`; -- uses Iceberg manifest for metadata
Einschränkungen
Jede Datei, die von Delta Lake nicht nachverfolgt wird, ist unsichtbar und kann gelöscht werden, wenn Sie VACUUM ausführen. Sie sollten das Aktualisieren oder Anfügen von Datendateien während des Konvertierungsprozesses vermeiden. Stellen Sie nach der Konvertierung der Tabelle sicher, dass alle Schreibvorgänge über Delta Lake ausgeführt werden.
Es ist möglich, dass mehrere externe Tabellen das gleiche zugrunde liegende Parquet-Verzeichnis verwenden. Wenn Sie in diesem Fall CONVERT für eine der externen Tabellen ausführen, können Sie nicht auf die anderen externen Tabellen zugreifen, weil das zugrunde liegende Verzeichnis von Parquet in Delta Lake konvertiert wurde. Damit Sie diese externen Tabellen wieder abfragen oder in sie schreiben können, müssen Sie auch für sie CONVERT ausführen.
CONVERT überträgt die Kataloginformationen (z. B. Schema- und Tabelleneigenschaften) in das Delta Lake-Transaktionsprotokoll. Wenn das zugrunde liegende Verzeichnis bereits in Delta Lake konvertiert wurde und sich seine Metadaten von den Katalogmetadaten unterscheiden, wird eine convertMetastoreMetadataMismatchException ausgelöst.
Wenn Sie bei der Verwendung von Databricks Runtime die vorhandenen Metadaten im Delta Lake-Transaktionsprotokoll mit CONVERT überschreiben möchten, legen Sie die SQL-Konfiguration spark.databricks.delta.convert.metadataCheck.enabled auf „false“ fest.