CONVERT TO DELTA
Van toepassing op: Databricks SQL Databricks Runtime
Converteert een bestaande Parquet-tabel naar een Delta-tabel in-place. Met deze opdracht worden alle bestanden in de map weergegeven, wordt een Delta Lake-transactielogboek gemaakt waarmee deze bestanden worden bijgehouden en wordt het gegevensschema automatisch afgeleid door de voetteksten van alle Parquet-bestanden te lezen. Het conversieproces verzamelt statistieken om de queryprestaties in de geconverteerde Delta-tabel te verbeteren. Als u een tabelnaam opgeeft, wordt de metastore ook bijgewerkt om aan te geven dat de tabel nu een Delta-tabel is.
Deze opdracht ondersteunt het converteren van Iceberg-tabellen waarvan de onderliggende bestandsindeling Parquet is. In dit geval genereert het conversieprogramma het Delta Lake-transactielogboek op basis van het systeemeigen bestandsmanifest, het schema en de partitioneringsgegevens van de Iceberg-tabel.
Syntaxis
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parameters
-
Een optioneel gekwalificeerde tabel-id of een pad naar een
parquet
oficeberg
bestandsmap. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten. Voor Iceberg-tabellen kunt u alleen paden gebruiken, omdat het converteren van beheerde ijsbergtabellen niet wordt ondersteund. GEEN STATISTIEKEN
Sla het verzamelen van statistieken tijdens het conversieproces over en voltooi de conversie sneller. Nadat de tabel is geconverteerd naar Delta Lake, kunt u de
OPTIMIZE ZORDER BY
gegevensindeling opnieuw organiseren en statistieken genereren.-
Partitioneer de gemaakte tabel door de opgegeven kolommen. Wanneer
table_name
is een pad vereistPARTITIONED BY
voor gepartitioneerde gegevens. Wanneer hettable_name
een gekwalificeerde tabel-id is,PARTITIONED BY
is de component optioneel en wordt de partitiespecificatie geladen vanuit de metastore. Bij beide benaderingen wordt het conversieproces afgebroken en wordt er een uitzondering gegenereerd als de mapstructuur niet voldoet aan de opgegeven of geladenPARTITIONED BY
specificatie.Notitie
In Databricks Runtime 11.1 en hieronder
PARTITIONED BY
is een vereist argument voor alle gepartitioneerde gegevens.
Voorbeelden
Notitie
U hoeft geen partitioneringsgegevens op te geven voor Iceberg-tabellen of -tabellen die zijn geregistreerd bij de metastore.
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
Waarschuwingen
Elk bestand dat niet door Delta Lake wordt bijgehouden, is onzichtbaar en kan worden verwijderd wanneer u deze uitvoert VACUUM
. Vermijd het bijwerken of toevoegen van gegevensbestanden tijdens het conversieproces. Nadat de tabel is geconverteerd, moet u ervoor zorgen dat alle schrijfbewerkingen door Delta Lake gaan.
Het is mogelijk dat meerdere externe tabellen dezelfde onderliggende Parquet-map delen. Als u in dit geval een van de externe tabellen uitvoert CONVERT
, hebt u geen toegang tot de andere externe tabellen omdat de onderliggende map is geconverteerd van Parquet naar Delta Lake. Als u opnieuw een query wilt uitvoeren of naar deze externe tabellen wilt schrijven, moet u ze ook uitvoeren CONVERT
.
CONVERT
vult de catalogusgegevens, zoals schema- en tabeleigenschappen, in op het Delta Lake-transactielogboek. Als de onderliggende map al is geconverteerd naar Delta Lake en de bijbehorende metagegevens afwijken van de metagegevens van de catalogus, wordt er een convertMetastoreMetadataMismatchException
gegenereerd.
Als u tijdens het gebruik van Databricks Runtime de bestaande metagegevens in het Delta Lake-transactielogboek wilt CONVERT
overschrijven, stelt u de SQL-configuratie spark.databricks.delta.convert.metadataCheck.enabled
in op false.