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.