In che modo Azure Databricks gestisce la compatibilità delle funzionalità delta Lake?
Delta Lake è un progetto open source indipendente sotto la governance di Linux Foundation. Databricks introduce il supporto per le nuove funzionalità e le ottimizzazioni delta Lake basate su Delta Lake nelle versioni di Databricks Runtime.
Le ottimizzazioni di Azure Databricks che sfruttano le funzionalità Delta Lake rispettano i protocolli usati in OSS Delta Lake per la compatibilità.
Molte ottimizzazioni di Azure Databricks richiedono l'abilitazione delle funzionalità di Delta Lake in una tabella. Le funzionalità di Delta Lake sono sempre compatibili con le versioni precedenti, quindi le tabelle scritte da una versione precedente di Databricks Runtime possono sempre essere lette e scritte da una versione di Databricks Runtime successiva. L'abilitazione di alcune funzionalità interrompe la compatibilità con le versioni successive per i carichi di lavoro in esecuzione in una versione di Databricks Runtime precedente. Per le funzionalità che interrompono la compatibilità con le versioni successive, è necessario aggiornare tutti i carichi di lavoro che fanno riferimento alle tabelle aggiornate in modo che usino una versione conforme di Databricks Runtime.
Nota
È possibile eliminare deletionVectors
, v2Checkpoint
, columnMapping
e typeWidening-preview
in Azure Databricks. Vedere Eliminare le funzionalità della tabella Delta.
Importante
Tutte le operazioni di modifica del protocollo sono in conflitto con tutte le scritture simultanee.
Le letture di streaming hanno esito negativo quando rilevano un commit che modifica i metadati della tabella. Se si vuole che lo streaming continui, è necessario riavviarlo. Per i metodi consigliati, vedere Considerazioni sulla produzione per Structured Streaming.
Quali funzionalità delta Lake richiedono aggiornamenti di Databricks Runtime?
Le funzionalità delta Lake seguenti interrompono la compatibilità con l'inoltro. Le funzionalità sono abilitate in base alla tabella. Questa tabella elenca la versione più bassa di Databricks Runtime ancora supportata da Azure Databricks.
Funzionalità | Richiede la versione di Databricks Runtime o successiva | Documentazione |
---|---|---|
CHECK constraints |
Databricks Runtime 9.1 LTS | Impostare un vincolo CHECK in Azure Databricks |
Modificare feed di dati | Databricks Runtime 9.1 LTS | Usare il feed di dati delle modifiche delta Lake in Azure Databricks |
Colonne generate | Databricks Runtime 9.1 LTS | Colonne generate da Delta Lake |
Mapping delle colonne | Databricks Runtime 10.4 LTS | Rinominare ed eliminare colonne con mapping di colonne Delta Lake |
Colonne Identity | Databricks Runtime 10.4 LTS | Usare le colonne Identity in Delta Lake |
Funzionalità di tabella | Databricks Runtime 12.2 LTS | Che cosa sono le funzionalità della tabella? |
Vettori di eliminazione | Databricks Runtime 12.2 LTS | Che cosa sono i vettori di eliminazione? |
TimestampNTZ | Databricks Runtime 13.3 LTS | TIMESTAMP_NTZ tipo |
Uniforme | Databricks Runtime 13.3 LTS | Usare UniForm per leggere le tabelle Delta con i client Iceberg |
Clustering liquido | Databricks Runtime 13.3 LTS | Usare il clustering liquido per le tabelle Delta |
Rilevamento riga | Databricks Runtime 14.1 | Usare il rilevamento delle righe per le tabelle Delta |
Ampliare il tipo | Databricks Runtime 15.2 | Ampliare il tipo |
Variant | Databricks Runtime 15.3 | Supporto varianti in Delta Lake |
Si veda Versioni e compatibilità delle note sulla versione di Databricks Runtime.
Nota
Le tabelle live Delta e Databricks SQL aggiornano automaticamente gli ambienti di runtime con versioni regolari per supportare nuove funzionalità. Vedere note sulla versione delle tabelle live Delta e il processo di aggiornamento della versione e le note sulla versione di Databricks SQL.
Che cos'è una specifica del protocollo di tabella?
Ogni tabella Delta ha una specifica del protocollo che indica il set di funzionalità supportate dalla tabella. La specifica del protocollo viene utilizzata dalle applicazioni che leggono o scrivono la tabella per determinare se possono gestire tutte le funzionalità supportate dalla tabella. Se un'applicazione non sa come gestire una funzionalità elencata come supportata nel protocollo di una tabella, tale applicazione non è in grado di leggere o scrivere tale tabella.
La specifica del protocollo è separata in due componenti: il protocollo di lettura e il protocollo di scrittura.
Avviso
La maggior parte degli aggiornamenti delle versioni del protocollo è irreversibile e l'aggiornamento della versione del protocollo potrebbe interrompere i lettori, i writer o entrambi i lettori di tabelle Delta Lake esistenti. Databricks consiglia di aggiornare tabelle specifiche solo quando necessario, ad esempio per acconsentire esplicitamente alle nuove funzionalità in Delta Lake. È anche necessario verificare che tutti gli strumenti di produzione correnti e futuri supportino le tabelle Delta Lake con la nuova versione del protocollo.
I downgrade dei protocolli sono disponibili per alcune funzionalità. Vedere Eliminare le funzionalità della tabella Delta.
Leggere il protocollo
Il protocollo di lettura elenca tutte le funzionalità supportate da una tabella e che un'applicazione deve comprendere per leggere correttamente la tabella. Per aggiornare il protocollo di lettura di una tabella è necessario che tutte le applicazioni lettore supportino le funzionalità aggiunte.
Importante
Tutte le applicazioni che scrivono in una tabella Delta devono essere in grado di creare uno snapshot della tabella. Di conseguenza, i carichi di lavoro che scrivono nelle tabelle Delta devono rispettare sia i requisiti del protocollo reader che del writer.
Se si verifica un protocollo non supportato da un carico di lavoro in Azure Databricks, è necessario eseguire l'aggiornamento a un runtime di Databricks superiore che supporta tale protocollo.
Protocollo di scrittura
Il protocollo di scrittura elenca tutte le funzionalità supportate da una tabella e che un'applicazione deve comprendere per scrivere correttamente nella tabella. Per aggiornare il protocollo di scrittura di una tabella è necessario che tutte le applicazioni writer supportino le funzionalità aggiunte. Non influisce sulle applicazioni di sola lettura, a meno che non venga aggiornato anche il protocollo di lettura.
Quali protocolli devono essere aggiornati?
Alcune funzionalità richiedono l'aggiornamento del protocollo di lettura e del protocollo di scrittura. Altre funzionalità richiedono solo l'aggiornamento del protocollo di scrittura.
Ad esempio, il supporto per CHECK
i vincoli è una funzionalità del protocollo di scrittura: solo la scrittura di applicazioni deve conoscere CHECK
i vincoli e applicarli.
Al contrario, il mapping delle colonne richiede l'aggiornamento dei protocolli di lettura e scrittura. Poiché i dati vengono archiviati in modo diverso nella tabella, le applicazioni lettore devono comprendere il mapping delle colonne in modo che possano leggere correttamente i dati.
Versioni minime del lettore e del writer
Nota
È necessario aggiornare esplicitamente la versione del protocollo di tabella quando si abilita il mapping delle colonne.
Quando si abilitano le funzionalità Delta in una tabella, il protocollo di tabella viene aggiornato automaticamente. Databricks consiglia di non modificare le proprietà della minReaderVersion
tabella e minWriterVersion
. La modifica di queste proprietà della tabella non impedisce l'aggiornamento del protocollo. L'impostazione di questi valori su un valore inferiore non comporta il downgrade della tabella. Vedere Eliminare le funzionalità della tabella Delta.
Che cosa sono le funzionalità della tabella?
In Databricks Runtime 12.2 LTS e versioni successive le funzionalità della tabella Delta Lake introducono flag granulari che specificano quali funzionalità sono supportate da una determinata tabella. In Databricks Runtime 11.3 LTS e versioni successive le funzionalità delta Lake sono state abilitate in bundle denominati versioni del protocollo. Le funzionalità di tabella sono il successore delle versioni del protocollo e sono progettate con l'obiettivo di migliorare la flessibilità per i client che leggono e scrivono Delta Lake. Vedere Che cos'è una versione del protocollo?.
Nota
Le funzionalità di tabella hanno requisiti di versione del protocollo. Vedere Funzionalità in base alla versione del protocollo.
Una funzionalità di tabella Delta è un marcatore che indica che la tabella supporta una particolare funzionalità. Ogni funzionalità è una funzionalità del protocollo di scrittura (ovvero aggiorna solo il protocollo di scrittura) o una funzionalità del protocollo di lettura/scrittura (ovvero i protocolli di lettura e scrittura vengono aggiornati per abilitare la funzionalità).
Per altre informazioni sulle funzionalità di tabella supportate in Delta Lake, vedere il protocollo Delta Lake.
Le funzionalità delle tabelle cambiano la modalità di abilitazione delle funzionalità delta Lake?
Se si interagisce solo con le tabelle Delta tramite Azure Databricks, è possibile continuare a tenere traccia del supporto per le funzionalità Delta Lake usando i requisiti minimi di Databricks Runtime. Azure Databricks supporta la lettura di tabelle Delta aggiornate alle funzionalità delle tabelle in tutte le versioni LTS di Databricks Runtime, purché tutte le funzionalità usate dalla tabella siano supportate da tale versione.
Se si legge e si scrive da tabelle Delta usando altri sistemi, potrebbe essere necessario considerare il modo in cui le funzionalità della tabella influisce sulla compatibilità, perché esiste un rischio che il sistema non sia in grado di comprendere le versioni del protocollo aggiornate.
Importante
Le funzionalità di tabella vengono introdotte nel formato Delta Lake per writer versione 7 e lettore versione 3. Azure Databricks ha eseguito il backporting del codice in tutte le versioni di Databricks Runtime LTS supportate per aggiungere il supporto per le funzionalità di tabella, ma solo per quelle funzionalità già supportate in Databricks Runtime. Ciò significa che, sebbene sia possibile acconsentire esplicitamente all'uso delle funzionalità di tabella per abilitare le colonne generate e che funzionino ancora con queste tabelle in Databricks Runtime 9.1 LTS, le tabelle con colonne Identity abilitate (che richiedono Databricks Runtime 10.4 LTS) non sono ancora supportate in tale databricks Runtime.
Che cos'è una versione del protocollo?
Una versione del protocollo è un numero di protocollo che indica un particolare raggruppamento di funzionalità di tabella. In Databricks Runtime 11.3 LTS e versioni successive non è possibile abilitare singolarmente le funzionalità di tabella. Le versioni del protocollo raggruppano un gruppo di funzionalità.
Le tabelle Delta specificano una versione del protocollo separata per il protocollo di lettura e il protocollo di scrittura. Il log delle transazioni per una tabella Delta contiene informazioni sul controllo delle versioni del protocollo che supportano l'evoluzione delta Lake. Vedere Esaminare i dettagli della tabella Delta Lake con i dettagli.
Le versioni del protocollo raggruppano tutte le funzionalità dei protocolli precedenti. Vedere Funzionalità in base alla versione del protocollo.
Nota
A partire dal writer versione 7 e lettore versione 3, Delta Lake ha introdotto il concetto di funzionalità di tabella. Usando le funzionalità della tabella, è ora possibile scegliere di abilitare solo le funzionalità supportate da altri client nell'ecosistema di dati. Vedere Che cosa sono le funzionalità della tabella?.
Funzionalità per versione del protocollo
La tabella seguente illustra le versioni minime del protocollo necessarie per le funzionalità delta Lake.
Nota
Se si è interessati solo alla compatibilità di Databricks Runtime, vedere Quali funzionalità delta Lake richiedono aggiornamenti di Databricks Runtime? La condivisione delta supporta solo la lettura di tabelle con funzionalità che richiedono minReaderVersion
= 1
.