Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I protocolli di tabella Delta Lake specificano le funzionalità che un client deve supportare per leggere o scrivere una tabella. Questa pagina illustra le versioni del protocollo, le funzionalità delle tabelle, i requisiti di compatibilità e il modo in cui Azure Databricks gestisce gli aggiornamenti dei protocolli. Vedere anche Esaminare i dettagli della tabella con i dettagli della descrizione.
Protocollo di tabella e compatibilità
Ogni tabella Delta Lake ha una specifica del protocollo che indica il set di funzionalità necessarie per leggere e scrivere nella tabella. Le applicazioni usano la specifica del protocollo per determinare se possono supportare tutte le funzionalità usate dalla tabella. Se un'applicazione non può supportare una funzionalità nel protocollo corrente di una tabella, tale applicazione non può leggere o scrivere tale tabella.
La maggior parte delle nuove funzionalità di Delta Lake richiede l'aggiornamento del protocollo di tabella.
La tabella seguente elenca i termini chiave che descrivono i protocolli Delta Lake:
| Termine | Description |
|---|---|
| Client Delta Lake | Qualsiasi sistema che legge o scrive in una tabella Delta Lake. |
| Leggere il protocollo | Specifica il supporto necessario per la lettura di una tabella da parte di un client Delta Lake. |
| Protocollo di scrittura | Specifica il supporto necessario per la scrittura in una tabella da parte di un client Delta Lake. |
minReaderVersion |
Valore intero del protocollo di lettura. I valori validi sono 1, 2o 3. |
minWriterVersion |
Valore intero del protocollo writer. I valori validi sono numeri interi 2 fino a 7. |
| Caratteristica della tabella | Alternativa con granularità fine alle versioni del protocollo usate quando minReaderVersion = 3 e minWriterVersion = 7. Le funzionalità delle tabelle sono mappate alle funzionalità Delta Lake abilitate facoltativamente. |
| Funzionalità scrittore | Funzionalità di tabella che richiede il supporto client di scrittura, ma non blocca l'accesso in sola lettura. |
| Funzionalità lettore | Funzionalità di tabella che richiede il supporto client di lettura e scrittura. Vedere Versioni del protocollo e funzionalità delle tabelle. |
Le funzionalità di scrittura e scrittura influiscono solo sulla compatibilità con i client writer, consentendo l'accesso in sola lettura alla tabella dai carichi di lavoro legacy.
Non tutte le funzionalità di Delta Lake sono compatibili tra loro.
Alcune funzionalità della tabella non possono essere eliminate una volta abilitate. Vedere Eliminare una funzionalità di tabella Delta Lake e effettuare il downgrade del protocollo di tabella.
Versioni del protocollo e funzionalità di tabella
Tutte le tabelle Delta Lake includono una versione del protocollo basata su integer rappresentata da minReaderVersion e minWriterVersion. Ogni versione raggruppa più funzionalità e le funzionalità sono cumulative tra le versioni. Per rispettare il protocollo Delta Lake, i client devono implementare il supporto per tutte le funzionalità in una determinata versione, incluse tutte le funzionalità rilasciate in precedenza.
In Databricks Runtime 12.2 LTS e versioni successive le funzionalità della tabella sostituiscono il protocollo basato su integer con flag granulari che indicano quali funzionalità usano una tabella. Ciò consente controlli di compatibilità più granulari tra client e tabelle.
Le funzionalità del writer di tabelle influiscono sulla modalità di scrittura dei dati.
minWriterVersion=7 Richiedono ma non bloccano i client lettore.
Le funzionalità del lettore di tabelle influiscono sulla modalità di lettura dei dati. Tutte le funzionalità del lettore sono anche funzionalità writer e richiedono minReaderVersion=3 e minWriterVersion=7. Un client non può scrivere in una tabella che non può leggere.
Quando le funzionalità della tabella sono abilitate, vengono visualizzate nel protocollo come readerFeatures o writerFeatures. Delta Lake risolve il protocollo di tabella nella versione più bassa che supporta tutte le funzionalità abilitate. Vedere Protocollo più basso possibile.
Annotazioni
Azure Databricks include il supporto parziale non di rilievo per le funzionalità di tabella in tutte le versioni di Databricks Runtime supportate. I client Delta Lake oss scelgono come implementare il supporto per le funzionalità specifiche.
Modifiche al protocollo
Il protocollo per una tabella cambia nelle condizioni seguenti:
- Se è abilitata una nuova funzionalità, il protocollo viene aggiornato.
- Se viene eliminata una funzionalità di tabella, viene effettuato il downgrade del protocollo.
La disattivazione di una funzionalità di tabella non comporta un downgrade del protocollo. È necessario eliminare la funzionalità per rimuoverla completamente dal protocollo. Non tutte le funzionalità della tabella possono essere eliminate. Vedere Eliminare una funzionalità di tabella Delta Lake e effettuare il downgrade del protocollo di tabella.
Tutte le operazioni di modifica del protocollo sono in conflitto con le scritture simultanee. Le letture di streaming hanno esito negativo quando rilevano un commit che modifica i metadati della tabella. Per continuare, riavviare i flussi interessati. Per i metodi consigliati, vedere Considerazioni sulla produzione per Structured Streaming.
Annotazioni
Databricks consiglia di non modificare mai direttamente le proprietà della minReaderVersion tabella e minWriterVersion . La modifica di queste proprietà non impedisce gli aggiornamenti del protocollo e l'impostazione di tali proprietà su un valore inferiore non effettua il downgrade della tabella. Vedere Eliminare una funzionalità di tabella Delta Lake e effettuare il downgrade del protocollo di tabella.
Cosa attiva un aggiornamento del protocollo
Quando si abilita una funzionalità, il protocollo di tabella viene aggiornato automaticamente.
Gli aggiornamenti del protocollo vengono attivati nei modi seguenti:
- Abilitare automaticamente in base alla sintassi usata nelle
CREATEistruzioni oALTER. Ad esempio,CLUSTER BYin un'istruzioneCREATE TABLEabilita automaticamente il clustering liquido eGENERATED ALWAYS ASabilita le colonne generate. - Abilitare in modo esplicito tramite le proprietà della tabella. Ad esempio, l'impostazione
'delta.enableDeletionVectors' = trueabilita i vettori di eliminazione. - L'abilitazione di una funzionalità potrebbe abilitare automaticamente le funzionalità necessarie. Ad esempio, l'abilitazione di UniForm abilita automaticamente il mapping delle colonne e abilita automaticamente il clustering liquido abilita il checkpoint V2. Esaminare la documentazione Azure Databricks pertinente per determinare quali tabelle presentano una determinata funzionalità.
Le funzionalità di lettura aggiornano sia i protocolli di lettura che di scrittura. Ad esempio, il mapping delle colonne è una funzionalità di lettura e richiede l'aggiornamento di entrambi i protocolli perché i dati vengono archiviati in modo diverso nell'archiviazione.
Funzionalità del writer, ad esempio CHECK vincoli, aggiornano solo il protocollo di scrittura.
Avvertimento
La maggior parte degli aggiornamenti delle versioni del protocollo è irreversibile e potrebbe interrompere i lettori, i writer o entrambi i lettori di tabelle Delta Lake esistenti. Aggiornare tabelle specifiche solo quando necessario e verificare che tutti gli strumenti di produzione correnti e futuri supportino la nuova versione del protocollo.
I downgrade dei protocolli sono disponibili per alcune funzionalità. Vedere Eliminare una funzionalità di tabella Delta Lake e effettuare il downgrade del protocollo di tabella.
Protocollo più basso possibile
Delta Lake risolve il protocollo di tabella nella versione più bassa che supporta tutte le funzionalità abilitate. Questo può solo abbassare minReaderVersion o minWriterVersion, non generarli mai. Le funzionalità di tabella non vengono mai rimosse automaticamente. Utilizzare DROP FEATURE per rimuovere una funzionalità di tabella dal protocollo.
Se tutte le funzionalità abilitate sono completamente supportate in una versione del protocollo basata su integer inferiore, la tabella potrebbe ripristinare tale versione e rilasciare readerFeatures o writerFeatures dal protocollo. Ciò non disabilita alcuna funzionalità. Le versioni di protocollo inferiori aumentano la compatibilità perché tutti i client devono rispettarli.
compatibilità Azure Databricks e Databricks Runtime
Azure Databricks introduce il supporto per le nuove funzionalità Delta Lake nelle versioni di Databricks Runtime:
- Le tabelle scritte da una versione inferiore di Databricks Runtime hanno il supporto completo di lettura e scrittura nelle versioni successive di Databricks Runtime.
- Le tabelle scritte da una versione più recente di Databricks Runtime potrebbero usare funzionalità di tabella non supportate nelle versioni precedenti di Databricks Runtime.
- Alcune funzionalità consentono le scritture dalle versioni precedenti di Databricks Runtime senza applicare completamente tutte le ottimizzazioni per la funzionalità abilitata.
Se si usano solo tabelle Delta Lake tramite Azure Databricks, è sufficiente tenere traccia del supporto delle funzionalità usando i requisiti minimi di Databricks Runtime. Se si leggono o scrivono tabelle da sistemi esterni, è necessario verificare che tali client supportino le funzionalità di tabella abilitate nelle tabelle.
Supporto delle funzionalità di tabella backported
In Databricks Runtime 12.2 LTS e versioni successive le funzionalità della tabella hanno sostituito il protocollo basato su integer con flag granulari che indicano quali funzionalità usano una tabella.
Azure Databricks include il supporto delle funzionalità di tabella backported in Databricks Runtime 11.3 LTS e versioni successive, anziché supportare solo le versioni del protocollo Integer, ma solo per le funzionalità già supportate in tale versione.
Ad esempio, è possibile leggere e scrivere in una tabella con colonne generate abilitate usando le funzionalità della tabella in Databricks Runtime 9.1 LTS. Tuttavia, non è possibile usare Databricks Runtime 9.1 LTS per leggere e scrivere in una tabella con colonne Identity abilitate usando le funzionalità di tabella perché le colonne Identity richiedono Databricks Runtime 10.4 LTS e versioni successive.
Quando si usano funzionalità di tabella con supporto backported, alcune operazioni disponibili in una determinata versione di Databricks Runtime potrebbero non essere disponibili nella versione corrispondente di OSS Delta Lake. Se l'architettura include client OSS Delta Lake, testare la compatibilità prima di abilitare le funzionalità di tabella nelle tabelle di produzione.
Funzionalità delta Lake e versioni di Databricks Runtime necessarie
La tabella seguente elenca la versione più bassa di Databricks Runtime con supporto completo per ogni funzionalità, in modo che tutte le funzionalità disponibili a livello generale per le letture e le scritture siano supportate.
| Feature | Richiede la versione di Databricks Runtime o successiva | Documentation |
|---|---|---|
vincoli CHECK |
Tutte le versioni supportate di Databricks Runtime |
CHECK vincolo |
| Modifica del flusso di dati | Tutte le versioni supportate di Databricks Runtime | Usare il feed di dati delle modifiche in Azure Databricks |
| Colonne generatee | Tutte le versioni supportate di Databricks Runtime | colonne generate da Delta Lake |
| Mappatura delle colonne | Tutte le versioni supportate di Databricks Runtime | Rinominare e rimuovere colonne con il mapping di colonne in Delta Lake |
| Colonne di identità | Tutte le versioni supportate di Databricks Runtime | Colonne identificative |
| Funzionalità di tabella | Tutte le versioni supportate di Databricks Runtime | Versioni del protocollo e funzionalità di tabella |
| Vettori di cancellazione | Tutte le versioni supportate di Databricks Runtime | Vettori di eliminazione in Databricks |
| TimestampNTZ | Databricks Runtime 13.3 LTS | tipo |
| UniForm | Databricks Runtime 13.3 LTS | Leggere le tabelle Delta Lake con i client Iceberg usando UniForm |
| Raggruppamento liquido | Databricks Runtime 13.3 LTS | Utilizzare il liquid clustering per le tabelle |
| Monitoraggio riga | Databricks Runtime 14.3 LTS | Rilevamento delle righe in Azure Databricks |
| Ampliare il tipo | Databricks Runtime 15.4 LTS | Ampliare il tipo |
| Variant | Databricks Runtime 15.4 LTS | Supporto dei tipi varianti per Apache Iceberg e Delta Lake |
| Collations | Databricks Runtime 16.1 | Supporto alla Collatione per Delta Lake |
| Posti di controllo protetti | Databricks Runtime versione 16.3 | Eliminare una funzionalità di tabella Delta Lake e effettuare il downgrade del protocollo di tabella |
| Commit del catalogo | Databricks Runtime 16.4 LTS | Catalogo dei commit |
Si veda Versioni e compatibilità delle note di rilascio di Databricks Runtime.
Annotazioni
Le pipeline dichiarative di Lakeflow Spark e Databricks SQL aggiornano automaticamente gli ambienti di runtime con versioni regolari per supportare nuove funzionalità. Vedere Le note sulla versione di Lakeflow Spark Declarative Pipelines e il processo di aggiornamento della versione e le note sulla versione di Databricks SQL.
Funzionalità per versione del protocollo
Annotazioni
Per la compatibilità di Databricks Runtime, vedere compatibilità Azure Databricks e Databricks Runtime.
Delta Lake usa valori separati minReaderVersion e minWriterVersion per specificare le funzionalità del protocollo. Il protocollo Delta Lake open source è standardizzato sulle funzionalità di tabella, ma alcuni client usano ancora il controllo delle versioni del protocollo legacy. Poiché alcuni client potrebbero non supportare tutte le funzionalità, Databricks consiglia di verificare con la documentazione client e la compatibilità dei test prima di abilitare nuove funzionalità nelle tabelle di produzione.
Apache Iceberg utilizza un'unica format-version invece di versioni di lettore e writer separate. Una versione del formato Iceberg indica quali funzionalità sono disponibili, ma non impone il loro uso. Le funzionalità sono attivabili su richiesta, ad eccezione del rilevamento delle righe che è obbligatorio nella versione del formato 3. Quando una funzionalità mostra N/A nella colonna Iceberg, si tratta di una funzionalità specifica delta senza un equivalente di Iceberg diretto.
La tabella seguente elenca i requisiti di versione del protocollo per le funzionalità delle tabelle Delta Lake e Apache Iceberg. Il tipo di funzionalità indica se una funzionalità deve essere rispettata solo per le scritture o per le operazioni di lettura e scrittura.
| Feature | Delta minWriterVersion |
Delta minReaderVersion |
Iceberg format-version |
Tipo di funzionalità |
|---|---|---|---|---|
| Funzionalità di base | 2 | 1 | 1 | Scrittore |
CHECK vincoli |
3 | 1 | N/A | Scrittore |
| Modifica flusso di dati | 4 | 1 | N/A | Scrittore |
| Colonne generate | 4 | 1 | N/A | Scrittore |
| Mapping delle colonne | 5 | 2 | N/A | Lettore e scrittore |
| Colonne identificative | 6 | 1 | N/A | Scrittore |
| Tracciamento delle righe | 7 | 1 | 3 | Scrittore |
| Vettori di eliminazione | 7 | 3 | 3 | Lettore e scrittore |
| TimestampNTZ | 7 | 3 | 1 | Lettore e scrittore |
| Clustering liquido | 7 | 3 | 1 | Lettore e scrittore (1) |
| Lettori Iceberg (UniForm) | 7 | 2 | N/A | Writer (2) |
| Ampliare il tipo | 7 | 3 | N/A | Lettore e scrittore |
| Variant | 7 | 3 | 3 | Lettore e scrittore |
| Shredding della variante | 7 | 3 | 3 | Lettore e scrittore |
| Collazioni | 7 | 3 | N/A | Lettore e scrittore |
| Checkpoints protetti | 7 | 1 | N/A | Scrittore |
| Catalogo dei commit | 7 | 3 | N/A | Lettore e scrittore |
(1): Il clustering liquido implementa il partizionamento nascosto.