Clonare in modo incrementale tabelle Parquet e Iceberg in Delta Lake

È possibile usare la funzionalità di clonazione di Azure Databricks per convertire in modo incrementale i dati da origini dati Parquet o Iceberg in tabelle Delta gestite o esterne.

Il clone di Azure Databricks per Parquet e Iceberg combina le funzionalità usate per clonare le tabelle Delta e convertire le tabelle in Delta Lake. Questo articolo descrive i casi d'uso e le limitazioni per questa funzionalità e fornisce esempi.

Importante

Questa funzionalità è disponibile in anteprima pubblica.

Nota

Questa funzionalità richiede Databricks Runtime 11.3 o versione successiva.

Quando usare il clone per l'inserimento incrementale dei dati Parquet o Iceberg

Azure Databricks offre una serie di opzioni per l'inserimento di dati nel lakehouse. Databricks consiglia di usare clone per inserire dati Parquet o Iceberg nelle situazioni seguenti:

Nota

Il termine tabella di origine fa riferimento ai file di tabella e di dati da clonare, mentre la tabella di destinazione fa riferimento alla tabella Delta creata o aggiornata dall'operazione.

  • Si sta eseguendo una migrazione da Parquet o Iceberg a Delta Lake, ma è necessario continuare a usare le tabelle di origine.
  • È necessario mantenere una sincronizzazione di sola inserimento tra una tabella di destinazione e una tabella di origine di produzione che riceve accodamenti, aggiornamenti ed eliminazioni.
  • Si vuole creare uno snapshot conforme a ACID dei dati di origine per la creazione di report, machine learning o batch ETL.

Qual è la sintassi per la clonazione?

Il clone per Parquet e Iceberg usa la stessa sintassi di base usata per clonare le tabelle Delta, con il supporto per cloni superficiali e profondi. Per altre informazioni, vedere Tipi di clonazione.

Databricks consiglia di usare il clone in modo incrementale per la maggior parte dei carichi di lavoro. Il supporto della clonazione per Parquet e Iceberg usa la sintassi SQL.

Nota

Il clone per Parquet e Iceberg ha requisiti e garanzie diversi rispetto al clone o alla conversione in Delta. Vedere Requisiti e limitazioni per la clonazione di tabelle Parquet e Iceberg.

Per clonare in modo approfondito una tabella Parquet o Iceberg usando un percorso di file, usare la sintassi seguente:

CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;

Per clonare superficialmente una tabella Parquet o Iceberg usando un percorso di file, usare la sintassi seguente:

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE iceberg.`/path/to/data`;

È anche possibile creare cloni profondi o superficiali per le tabelle Parquet registrate nel metastore, come illustrato negli esempi seguenti:

CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;

Requisiti e limitazioni per la clonazione di tabelle Parquet e Iceberg

Se si usano cloni profondi o superficiali, le modifiche applicate alla tabella di destinazione dopo che il clone non può essere sincronizzato con la tabella di origine. La sincronizzazione incrementale con clone è unidirezionale, consentendo l'applicazione automatica delle modifiche alle tabelle di origine alle tabelle Delta di destinazione.

Quando si usa clone con tabelle Parquet e Iceberg, si applicano le limitazioni aggiuntive seguenti:

  • È necessario registrare tabelle Parquet con partizioni in un catalogo, ad esempio il metastore Hive prima di clonare e usare il nome della tabella per idenfity della tabella di origine. Non è possibile usare la sintassi clone basata su percorso per le tabelle Parquet con partizioni.
  • Non è possibile clonare le tabelle Iceberg che hanno sperimentato l'evoluzione delle partizioni.
  • Non è possibile clonare tabelle di merge di Iceberg in lettura con aggiornamenti, eliminazioni o merge.
  • Di seguito sono riportate le limitazioni per la clonazione di tabelle Iceberg con partizioni definite nelle colonne troncate:
    • In Databricks Runtime 12.2 LTS e versioni successive l'unico tipo di colonna troncato supportato è string.
    • In Databricks Runtime 13.3 LTS e versioni successive è possibile usare colonne troncate di tipi string, longo int.
    • Azure Databricks non supporta l'uso di colonne troncate di tipo decimal.
  • Il clone incrementale sincronizza le modifiche e le proprietà dello schema dalla tabella di origine, vengono ignorate le modifiche dello schema e i file di dati scritti localmente nella tabella clonata.
  • Il catalogo unity non supporta cloni superficiali.
  • Non è possibile usare modelli GLOB per la definizione di un percorso.

Nota

In Databricks Runtime 11.3 questa operazione non raccoglie statistiche a livello di file. Di conseguenza, le tabelle di destinazione non traggono vantaggio dal salto dei dati Delta Lake. Le statistiche a livello di file vengono raccolte in Databricks Runtime 12.2 LTS e versioni successive.