CONVERTI IN DELTA

Si applica a:check contrassegnato sì controllo SQL databricks contrassegnato come sì 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 inferisce automaticamente lo schema dei dati leggendo i piè di pagina di tutti i file Parquet. Il processo di conversione raccoglie le 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

  • Table_name

    Identificatore di tabella facoltativamente qualificato o percorso di una parquet directory o iceberg file. Il nome non deve includere una specifica temporale. Per le tabelle iceberg è possibile usare solo i percorsi, poiché la conversione delle tabelle dell'iceberg gestito 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.

  • PARTIZIONATO DA

    Partizionare la tabella creata dalle colonne specificate. Quando table_name è un percorso, è PARTITIONED BY necessario per i dati partizionati. Quando si tratta di un identificatore di tabella qualificato, PARTITIONED BY la table_name 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 della directory non è conforme alla specifica specificata o caricata PARTITIONED 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 di 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

Avvertenze

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 vadano attraverso Delta Lake.

È possibile che più tabelle esterne condividono 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 anche.

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 generato un convertMetastoreMetadataMismatchException oggetto.

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.

Annullare la conversione

Se sono state eseguite operazioni Delta Lake, ad DELETE esempio o OPTIMIZE che possono modificare i file di dati:

  1. Eseguire il comando seguente per Garbage Collection:
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
  1. Eliminare la <path-to-table>/_delta_log directory.