Eliminare le funzionalità della tabella Delta
Importante
Il supporto per eliminare le funzionalità delle tabelle Delta e le versioni del protocollo di downgrade è disponibile in anteprima pubblica in Databricks Runtime 14.1 e versioni successive.
Azure Databricks offre un supporto limitato per eliminare le funzionalità delle tabelle. Per eliminare una funzionalità di tabella, è necessario che si verifichi quanto segue:
- Disabilitare le proprietà della tabella che usano la funzionalità tabella.
- Rimuovere tutte le tracce della funzionalità di tabella dai file di dati che esegue il backup della tabella.
- Rimuovere le voci delle transazioni che usano la funzionalità tabella dal log delle transazioni.
- Effettuare il downgrade del protocollo di tabella.
Se supportato, è consigliabile usare questa funzionalità solo per supportare la compatibilità con le versioni precedenti di Databricks Runtime, la condivisione delta o altri client di lettura o writer Delta Lake.
Importante
Tutte le DROP FEATURE
operazioni 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.
Come è possibile eliminare una funzionalità di tabella Delta?
Per rimuovere una funzionalità di tabella Delta, eseguire un ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]
comando. Vedere ALTER TABLE.
È necessario usare Databricks Runtime 14.1 o versione successiva e disporre MODIFY
dei privilegi per la tabella Delta di destinazione.
Quali funzionalità della tabella Delta possono essere eliminate?
È possibile eliminare le funzionalità della tabella Delta seguenti:
deletionVectors
. Si veda Che cosa sono i vettori di eliminazione?.v2Checkpoint
. Vedere Compatibilità per le tabelle con clustering liquido.columnMapping
. Si veda Rinominare ed eliminare le colonne con mapping di colonne Delta Lake.typeWidening-preview
. Vedere Estensione del tipo.checkConstraints
. Vedere Vincoli in Azure Databricks.
Non è possibile eliminare altre funzionalità della tabella Delta.
Abilitare le funzionalità della tabella per eliminare le funzionalità legacy
Il DROP FEATURE
comando richiede versioni del protocollo che supportano le letture e le scritture delle funzionalità di tabella. Funzionalità delta come columnMapping
e checkConstraints
sono state supportate nelle versioni precedenti del protocollo. A seconda di altre funzionalità abilitate nella tabella, potrebbe essere necessario aggiornare le versioni del protocollo prima di poter eliminare queste funzionalità.
È possibile usare il comando seguente per aggiornare le versioni del lettore di tabelle e del writer, che consente di eliminare il mapping delle colonne e effettuare il downgrade del protocollo:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '3',
'delta.minWriterVersion' = '7'
)
Come vengono eliminate le funzionalità delle tabelle Delta?
Poiché le funzionalità della tabella Delta rappresentano protocolli lettore e writer, devono essere completamente assenti dal log delle transazioni per la rimozione completa. L'eliminazione di una funzionalità avviene in due fasi e richiede tempo prima del completamento. Le specifiche della rimozione delle funzionalità variano in base alla funzionalità, ma la sezione seguente offre una panoramica generale.
Preparare l'eliminazione di una funzionalità di tabella
Durante la prima fase, l'utente si prepara a eliminare la funzionalità tabella. Di seguito viene descritto cosa accade durante questa fase:
- L'utente esegue il
DROP FEATURE
comando . - Le proprietà della tabella che abilitano in modo specifico una funzionalità di tabella hanno valori impostati per disabilitare la funzionalità.
- Le proprietà della tabella che controllano i comportamenti associati alla funzionalità eliminata hanno opzioni impostate sui valori predefiniti prima dell'introduzione della funzionalità.
- Se necessario, i file di dati e di metadati vengono riscritti rispettando le proprietà aggiornate della tabella.
- Il comando termina l'esecuzione e restituisce un messaggio di errore che informa l'utente che deve attendere 24 ore per procedere con la rimozione delle funzionalità.
Dopo la prima disabilitazione di una funzionalità, è possibile continuare a scrivere nella tabella di destinazione prima di completare il downgrade del protocollo, ma non è possibile usare la funzionalità di tabella che si sta rimuovendo.
Nota
Se si lascia la tabella in questo stato, le operazioni sulla tabella non usano la funzionalità tabella, ma il protocollo supporta comunque la funzionalità di tabella. Fino a quando non si completa il passaggio di downgrade finale, la tabella non è leggibile dai client Delta che non conoscono la funzionalità della tabella.
Effettuare il downgrade del protocollo ed eliminare una funzionalità di tabella
Per eliminare la funzionalità tabella, è necessario rimuovere tutta la cronologia delle transazioni associata alla funzionalità e effettuare il downgrade del protocollo.
- Dopo almeno 24 ore, l'utente esegue di nuovo il
DROP FEATURE
comando con laTRUNCATE HISTORY
clausola . - Il client conferma che nessuna transazione nella soglia di conservazione specificata utilizza la funzionalità tabella, quindi tronca la cronologia della tabella a tale ritenuta.
- Il protocollo viene effettuato il downgrade, eliminando la funzionalità della tabella.
- Se le funzionalità della tabella presenti nella tabella possono essere rappresentate da una versione del protocollo legacy, e
minReaderVersion
minWriterVersion
per la tabella viene effettuato il downgrade alla versione più bassa che supporta esattamente tutte le funzionalità rimanenti in uso dalla tabella Delta.
Importante
L'esecuzione ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
rimuove tutti i dati del log delle transazioni precedenti a 24 ore. Dopo l'eliminazione di una funzionalità di tabella Delta, non è possibile accedere alla cronologia delle tabelle o ai viaggi temporali.
Si veda In che modo Azure Databricks gestisce la compatibilità delle funzionalità di Delta Lake?.