CONVERT TO DELTA
Si applica a: Databricks SQL Databricks Runtime
Converte una tabella Parquet esistente in una tabella Delta sul posto. Questo comando elenca tutti i file nella directory, crea un log delle transazioni Delta Lake che tiene traccia di questi file e deduce automaticamente lo schema dei dati leggendo i piè di pagina di tutti i file Parquet. Il processo di conversione raccoglie statistiche per migliorare le prestazioni delle query nella tabella Delta convertita. Se si specifica un nome di tabella, il metastore viene aggiornato anche per riflettere che la tabella è ora una tabella Delta.
Questo comando supporta la conversione di tabelle Iceberg il cui formato di file sottostante è Parquet. In questo caso, il convertitore genera il log delle transazioni Delta Lake in base al manifesto del file nativo della tabella Iceberg, allo schema e alle informazioni di partizionamento.
Sintassi
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parametri
-
Un identificatore di tabella qualificato facoltativamente o un percorso di una
parquet
directory di file oiceberg
. Il nome non deve includere una specifica temporale. Per le tabelle Iceberg, è possibile usare solo i percorsi, perché la conversione delle tabelle di iceberg gestite non è supportata. NESSUNA STATISTICA
Ignorare la raccolta di statistiche durante il processo di conversione e completare la conversione più velocemente. Dopo la conversione della tabella in Delta Lake, è possibile usare
OPTIMIZE ZORDER BY
per riorganizzare il layout dei dati e generare statistiche.-
Partizionare la tabella creata in base alle colonne specificate. Quando
table_name
è un percorso, è necessario per iPARTITIONED BY
dati partizionati.table_name
Quando è un identificatore di tabella completo,PARTITIONED BY
la clausola è facoltativa e la specifica della partizione viene caricata dal metastore. In entrambi gli approcci, il processo di conversione interrompe e genera un'eccezione se la struttura di directory non è conforme alla specifica specificata o caricataPARTITIONED BY
.Nota
In Databricks Runtime 11.1 e versioni successive
PARTITIONED BY
è un argomento obbligatorio per tutti i dati partizionati.
Esempi
Nota
Non è necessario fornire informazioni sul partizionamento per tabelle o tabelle Iceberg registrate nel 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
Precisazioni
Qualsiasi file non rilevato da Delta Lake è invisibile e può essere eliminato quando si esegue VACUUM
. È consigliabile evitare di aggiornare o aggiungere file di dati durante il processo di conversione. Dopo la conversione della tabella, assicurarsi che tutte le scritture vengano passate tramite Delta Lake.
È possibile che più tabelle esterne convidano la stessa directory Parquet sottostante. In questo caso, se si esegue CONVERT
in una delle tabelle esterne, non sarà possibile accedere alle altre tabelle esterne perché la directory sottostante è stata convertita da Parquet a Delta Lake. Per eseguire di nuovo query o scrivere in queste tabelle esterne, è necessario eseguirle CONVERT
.
CONVERT
popola le informazioni del catalogo, ad esempio le proprietà dello schema e della tabella, nel log delle transazioni Delta Lake. Se la directory sottostante è già stata convertita in Delta Lake e i relativi metadati sono diversi dai metadati del catalogo, viene generata un'eccezione convertMetastoreMetadataMismatchException
.
Durante l'uso di Databricks Runtime, se si desidera CONVERT
sovrascrivere i metadati esistenti nel log delle transazioni Delta Lake, impostare la configurazione spark.databricks.delta.convert.metadataCheck.enabled
SQL su false.