Konvertera till delta (Delta Lake på Azure Databricks)
CONVERT TO DELTA [ [db_name.]table_name | parquet.`<path-to-table>` ] [NO STATISTICS]
[PARTITIONED BY (col_name1 col_type1, col_name2 col_type2, ...)]
Anteckning
CONVERT TO DELTA [db_name.]table_name
kräver Databricks Runtime 6.6 eller senare.
Konvertera en befintlig Parquet-tabell till en Delta-tabell på plats. Det här kommandot visar alla filer i katalogen, skapar en Delta Lake-transaktionslogg som spårar dessa filer och automatiskt härleder dataschemat genom att läsa sidfötterna för alla Parquet-filer. Konverteringsprocessen samlar in statistik för att förbättra frågeprestanda i den konverterade Delta-tabellen. Om du anger ett tabellnamn uppdateras metaarkivet för att återspegla att tabellen nu är en Delta-tabell.
NO STATISTICS
Kringgå statistikinsamlingen under konverteringsprocessen och slutför konverteringen snabbare. När tabellen har konverterats till Delta Lake kan du använda OPTIMIZE ZORDER BY
för att ordna om datalayouten och generera statistik.
PARTITIONED BY
Partitionering av tabellen som skapats av de angivna kolumnerna. Krävs om data partitioneras. Konverteringsprocessen avbryter och utlöser ett undantag om katalogstrukturen inte överensstämmer med specifikationen PARTITIONED BY
. Om du inte anger PARTITIONED BY
-satsen förutsätter kommandot att tabellen inte är partitionerad.
Varningar
Alla filer som inte spåras av Delta Lake är osynliga och kan tas bort när du kör VACUUM
. Du bör undvika att uppdatera eller lägga till datafiler under konverteringsprocessen. När tabellen har konverterats kontrollerar du att alla skrivningar går igenom Delta Lake.
Det är möjligt att flera externa tabeller delar samma underliggande Parquet-katalog. Om du i det här fallet kör CONVERT
på en av de externa tabellerna kommer du inte att kunna komma åt de andra externa tabellerna eftersom deras underliggande katalog har konverterats från Parquet till Delta Lake. Om du vill fråga eller skriva till dessa externa tabeller igen måste du köra CONVERT
dem också.
CONVERT
fyller i kataloginformationen, till exempel schema- och tabellegenskaper, i Delta Lake-transaktionsloggen. Om den underliggande katalogen redan har konverterats till Delta Lake och dess metadata skiljer sig från katalogmetadata genereras en convertMetastoreMetadataMismatchException
. Om du vill CONVERT
skriva över befintliga metadata i Delta Lake-transaktionsloggen anger du SQL konfigurationen spark.databricks.delta.convert.metadataCheck.enabled
till false.
Ångra konverteringen
Om du har utfört Delta Lake-åtgärder som DELETE
eller OPTIMIZE
som kan ändra datafilerna kör du först följande kommando för skräpinsamling:
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
Ta sedan bort <path-to-table>/_delta_log
katalogen.