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'attivazione delle funzionalità Delta Lake su un table. Le funzionalità di Delta Lake sono sempre retrocompatibili, quindi tables scritte da una versione inferiore di Databricks Runtime possono essere sempre lette e scritte da una versione più recente di Databricks Runtime. 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 l'inoltro, è necessario update tutti i carichi di lavoro che fanno riferimento al tables aggiornato per usare una versione di Databricks Runtime conforme.
Nota
È possibile eliminare deletionVectors
, v2Checkpoint
, columnMapping
, typeWidening-preview
e collations-preview
in Azure Databricks. Vedere Drop Delta table features.
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 table. 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 su una base di tablepertable. Questo table 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 | Set un controllo constraint in Azure Databricks |
Modificare feed di dati | Databricks Runtime 9.1 LTS | Usare il feed di dati delle modifiche delta Lake in Azure Databricks |
Il columns generato | Databricks Runtime 9.1 LTS | Delta Lake è stato generato columns |
mapping Column | Databricks Runtime 10.4 LTS | Rinominare ed eliminare columns con mappatura Delta Lake column |
Identità columns | Databricks Runtime 10.4 LTS | Usare l'identità columns in Delta Lake |
Caratteristiche di Table | Databricks Runtime 12.2 LTS | Quali sono le funzionalità di table? |
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 | Read Delta tables con client Iceberg |
Clustering liquido | Databricks Runtime 13.3 LTS | Usare il clustering liquido per tables Delta |
Rilevamento riga | Databricks Runtime 14.1 | Usare il rilevamento delle righe per Delta tables |
Ampliare il tipo | Databricks Runtime 15.2 | Ampliare il tipo |
Variant | Databricks Runtime 15.3 | Supporto varianti in Delta Lake |
Collazioni | Databricks Runtime 16.1 | Supporto alla Collatione per Delta Lake |
Si veda Versioni e compatibilità delle note sulla versione di Databricks Runtime.
Nota
Delta Live Tables e Databricks SQL aggiornano automaticamente gli ambienti di runtime con versioni regolari per supportare nuove funzionalità. Vedere le note sulla versione di Delta Live Tables e il processo di aggiornamento della versione, nonché le note sulla versione di Databricks SQL .
Che cos'è una specifica del protocollo table?
Ogni Delta table ha una specifica del protocollo che indica le caratteristiche set supportate dal table. La specifica del protocollo viene usata dalle applicazioni che leggono o scrivono il table per determinare se possono gestire tutte le funzionalità supportate dal table. Se un'applicazione non sa come gestire una funzionalità elencata come supportata nel protocollo di un table, l'applicazione non può leggere o scrivere tale table.
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 delta table Lake esistenti. Databricks consiglia di aggiornare tables specifiche solo quando necessario, ad esempio per abilitare le nuove funzionalità di Delta Lake. È anche necessario verificare che tutti gli strumenti di produzione correnti e futuri supportino Delta Lake tables con la nuova versione del protocollo.
I downgrade dei protocolli sono disponibili per alcune funzionalità. Consulta le caratteristiche di Drop Delta table.
Leggere il protocollo
Il protocollo di lettura elenca tutte le funzionalità supportate da un table e che un'applicazione deve comprendere per leggere correttamente il table. L'aggiornamento del protocollo di lettura di un table richiede che tutte le applicazioni lettore supportino le funzionalità aggiunte.
Importante
Tutte le applicazioni che scrivono su un Delta table devono essere capaci di creare uno snapshot del table. Di conseguenza, i workload che scrivono su Delta tables devono rispettare i requisiti sia del protocollo di lettura che di scrittura.
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 un table e che un'applicazione deve comprendere per scrivere correttamente nel table. Per aggiornare il protocollo di scrittura di un table è 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, column mapping richiede l'aggiornamento sia dei protocolli di lettura che di scrittura. Poiché i dati vengono archiviati in modo diverso nella table, le applicazioni per lettori devono comprendere la mappatura di column affinché possano leggere correttamente i dati.
Versioni minime del lettore e del writer
Nota
È necessario aggiornare esplicitamente la versione del protocollo table quando si abilita il mapping column.
Quando si abilitano le funzionalità Delta in un table, il protocollo table viene aggiornato automaticamente. Databricks consiglia di non modificare le proprietà minReaderVersion
e minWriterVersion
table. La modifica di queste proprietà table non impedisce l'aggiornamento del protocollo. L'impostazione di questi values su un valore inferiore non degrada il table. Vedi Drop Delta table caratteristiche.
Quali sono le funzionalità di table?
Nelle versioni 12.2 LTS e successive di Databricks Runtime, le funzionalità di Delta Lake table introducono flag granulari che specificano quali funzionalità sono supportate da un determinato table. In Databricks Runtime 11.3 LTS e versioni successive le funzionalità delta Lake sono state abilitate in bundle denominati versioni del protocollo. Le funzionalità Table sono il successore delle versioni del protocollo e sono progettate con l'obiettivo di migliorare la flessibilità per i client che leggono e scrivono su Delta Lake. Vedere Che cos'è una versione del protocollo?.
Nota
Le funzionalità Table hanno requisiti di versione del protocollo. Vedere Funzionalità in base alla versione del protocollo.
Una funzionalità delta table è un marcatore che indica che il table 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 table supportate in Delta Lake, vedere il protocollo Delta Lake.
Le funzionalità di table cambiano la modalità di abilitazione delle funzionalità di Delta Lake?
Se si interagisce solo con Delta tables 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 dei Delta tables aggiornati con le funzionalità di table in tutte le versioni LTS di Databricks Runtime, a condizione che tutte le funzionalità utilizzate dal table siano supportate da tale versione.
Se si legge e si scrive da Delta tables usando altri sistemi, potrebbe essere necessario prendere in considerazione l'impatto delle funzionalità table sulla compatibilità, perché esiste un rischio che il sistema non sia in grado di comprendere le versioni del protocollo aggiornate.
Importante
Le funzionalità Table sono state introdotte nel formato Delta Lake per la versione 7 del writer e la versione 3 del lettore. 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 table, ma solo per quelle funzionalità già supportate in tale Databricks Runtime. Ciò significa che, sebbene sia possibile optare per l'uso delle funzionalità di table per abilitare le columns generate e continuare a utilizzare questi tables in Databricks Runtime 9.1 LTS, tables con identità columns abilitata (che richiede Databricks Runtime 10.4 LTS) non sono ancora supportati in Databricks Runtime 9.1 LTS.
Che cos'è una versione del protocollo?
Una versione del protocollo è un numero di protocollo che indica un particolare raggruppamento di funzionalità di table. In Databricks Runtime 11.3 LTS e versioni successive non è possibile abilitare singolarmente le funzionalità di table. Le versioni del protocollo raggruppano un gruppo di funzionalità.
Delta tables specifica una versione del protocollo separata per il protocollo di lettura e quello di scrittura. Il log delle transazioni per un Delta table contiene informazioni sulla versione del protocollo che supportano l'evoluzione di Delta Lake. Vedere esaminare i dettagli di Delta Lake table con la descrizione dettagliata.
Le versioni del protocollo raggruppano tutte le funzionalità dei protocolli precedenti. Vedere Funzionalità in base alla versione del protocollo.
Nota
A partire dalla versione dello scrittore 7 e dalla versione del lettore 3, Delta Lake ha introdotto il concetto di funzionalità di table. Usando le funzionalità di table, ora è possibile scegliere di abilitare solo quelle supportate dagli altri clienti nel tuo ecosistema di dati. Vedere Quali sono le funzionalità di table?.
Funzionalità per versione del protocollo
L'table seguente mostra 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? Delta Sharing supporta solo la lettura di tables con funzionalità che richiedono minReaderVersion
= 1
.