Che cosa sono i vettori di eliminazione?
I vettori di eliminazione sono una funzionalità di ottimizzazione dell'archiviazione che è possibile abilitare nelle tabelle Delta Lake. Per impostazione predefinita, quando viene eliminata una singola riga in un file di dati, è necessario riscrivere l'intero file Parquet contenente il record. Con i vettori di eliminazione abilitati per la tabella, DELETE
, UPDATE
, e MERGE
le operazioni usano vettori di eliminazione per contrassegnare le righe esistenti come rimosse o modificate senza riscrivere il file Parquet. Le letture successive nella tabella risolvono lo stato della tabella corrente applicando le eliminazioni indicate dai vettori di eliminazione alla versione più recente della tabella.
Databricks consiglia di usare Databricks Runtime 14.3 LTS e versioni successive per scrivere tabelle con vettori di eliminazione per usare tutte le ottimizzazioni. È possibile leggere le tabelle con vettori di eliminazione abilitati in Databricks Runtime 12.2 LTS e versioni successive.
In Databricks Runtime 14.2 e versioni successive le tabelle con vettori di eliminazione supportano la concorrenza a livello di riga. Vedere Conflitti di scrittura con concorrenza a livello di riga.
Nota
Photon sfrutta i vettori di eliminazione per gli aggiornamenti di I/O predittivi, l'accelerazione DELETE
delle operazioni , MERGE
e UPDATE
. Tutti i client che supportano la lettura dei vettori di eliminazione possono leggere gli aggiornamenti che hanno prodotto vettori di eliminazione, indipendentemente dal fatto che questi aggiornamenti siano stati generati dall'I/O predittiva. Vedere Usare l'I/O predittiva per accelerare gli aggiornamenti.
Abilitare i vettori di eliminazione
Importante
Un'impostazione di amministratore dell'area di lavoro controlla se i vettori di eliminazione sono abilitati automaticamente per le nuove tabelle Delta. Vedere Abilitare automaticamente i vettori di eliminazione.
Se viene usata l'impostazione dell'area di lavoro per controllare l'abilitazione automatica dei vettori di eliminazione, in base all'opzione selezionata per i tipi di tabella, i vettori di eliminazione vengono abilitati per impostazione predefinita quando si crea una nuova tabella usando sql warehouse o Databricks Runtime 14.1 o versione successiva. I vettori di eliminazione non sono abilitati per impostazione predefinita quando si creano viste materializzate o tabelle di streaming e devono essere abilitati manualmente quando si crea una vista materializzata o una tabella di streaming.
Per abilitare manualmente il supporto per i vettori di eliminazione in una tabella o vista, utilizzare la delta.enableDeletionVectors
proprietà table. È possibile abilitare manualmente i vettori di eliminazione in una tabella delta quando si crea o si modifica la tabella. È possibile abilitare manualmente i vettori di eliminazione in una vista materializzata o in una tabella di streaming solo quando si crea la vista materializzata o la tabella di streaming. Non è possibile usare un'istruzione ALTER
per abilitare i vettori di eliminazione in una vista materializzata o in una tabella di streaming.
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Avviso
Quando si abilitano i vettori di eliminazione, il protocollo di tabella viene aggiornato. Dopo l'aggiornamento, la tabella non sarà leggibile dai client Delta Lake che non supportano i vettori di eliminazione. Si veda In che modo Azure Databricks gestisce la compatibilità delle funzionalità di Delta Lake?.
In Databricks Runtime 14.1 e versioni successive è possibile eliminare la funzionalità di tabella dei vettori di eliminazione per abilitare la compatibilità con altri client Delta. Vedere Eliminare le funzionalità della tabella Delta.
Applicare modifiche ai file di dati Parquet
I vettori di eliminazione indicano modifiche alle righe come eliminazioni temporaneamente che modificano logicamente i file di dati Parquet esistenti nella tabella Delta Lake. Queste modifiche vengono applicate fisicamente quando uno degli eventi seguenti causa la riscrittura dei file di dati:
- Nella tabella viene eseguito un
OPTIMIZE
comando. - La compattazione automatica attiva una riscrittura di un file di dati con un vettore di eliminazione.
REORG TABLE ... APPLY (PURGE)
viene eseguito sulla tabella.
Gli eventi correlati alla compattazione dei file non hanno garanzie rigorose per la risoluzione delle modifiche registrate nei vettori di eliminazione e alcune modifiche registrate nei vettori di eliminazione potrebbero non essere applicate se i file di dati di destinazione non sarebbero altrimenti candidati per la compattazione dei file. REORG TABLE ... APPLY (PURGE)
riscrive tutti i file di dati contenenti record con modifiche registrate usando vettori di eliminazione. Vedere TABELLA REORG.
Nota
I dati modificati potrebbero essere ancora presenti nei file precedenti. È possibile eseguire VACUUM per eliminare fisicamente i file precedenti. REORG TABLE ... APPLY (PURGE)
crea una nuova versione della tabella al termine. Questo tempo di completamento è il timestamp da considerare per la soglia di conservazione per VACUUM
consentire all'operazione di rimuovere completamente i file eliminati. Vedere Rimuovere i file di dati inutilizzati con vuoto.
Compatibilità con i client Delta
Azure Databricks usa vettori di eliminazione per alimentare le operazioni di I/O predittive per gli aggiornamenti nel calcolo abilitato per Photon. Vedere Usare l'I/O predittiva per accelerare gli aggiornamenti.
Il supporto per l'uso di vettori di eliminazione per letture e scritture varia in base al client.
La tabella seguente indica le versioni client necessarie per la lettura e la scrittura di tabelle Delta con vettori di eliminazione abilitati e specifica quali operazioni di scrittura usano vettori di eliminazione:
Client | Scrivere vettori di eliminazione | Leggere i vettori di eliminazione |
---|---|---|
Databricks Runtime con Photon | Supporta MERGE , UPDATE e DELETE l'uso di Databricks Runtime 12.2 LTS e versioni successive. |
È necessario Databricks Runtime 12.2 LTS o versione successiva. |
Databricks Runtime senza Photon | Supporta DELETE l'uso di Databricks Runtime 12.2 LTS e versioni successive. Supporta UPDATE l'uso di Databricks Runtime 14.1 e versioni successive. Supporta MERGE l'uso di Databricks Runtime 14.3 LTS e versioni successive. |
È necessario Databricks Runtime 12.2 LTS o versione successiva. |
OSS Apache Spark con OSS Delta Lake | Supporta DELETE l'uso di OSS Delta 2.4.0 e versioni successive. Supporta UPDATE l'uso di OSS Delta 3.0.0 e versioni successive. |
Richiede OSS Delta 2.3.0 o versione successiva. |
Destinatari di condivisione differenziale | Le scritture non sono supportate nelle tabelle di condivisione delta | Databricks: richiede DBR 14.1 o versione successiva. Apache Spark open source: richiede delta-sharing-spark la versione 3.1 o successiva. |
Nota
Per il supporto con altri client Delta, vedere la documentazione relativa alle integrazioni di OSS Delta Lake.
Limiti
- UniForm non supporta i vettori di eliminazione.
- Non è possibile utilizzare un'istruzione GENERATE per generare un file manifesto per una tabella con file che usano vettori di eliminazione. Per generare un manifesto, eseguire prima di tutto UNA TABELLA REORG ... Istruzione APPLY (PURGE) e quindi eseguire l'istruzione
GENERATE
. Quando si invia l'istruzioneREORG
, è necessario assicurarsi che non siano in esecuzione operazioni di scrittura simultanee. - Non è possibile generare in modo incrementale i file manifesto per una tabella con vettori di eliminazione abilitati, ad esempio impostando la proprietà
delta.compatibility.symlinkFormatManifest.enabled=true
table . - Se si abilitano vettori di eliminazione in una vista materializzata o in una tabella di streaming e successivamente si disabilitano i vettori di eliminazione, le scritture future nella vista o nella tabella non vengono rimosse, ma i vettori di eliminazione esistenti non vengono rimossi.
- Non è possibile effettuare il downgrade del protocollo di tabella dopo aver abilitato i vettori di eliminazione in una vista materializzata o in una tabella di streaming. Dopo l'abilitazione, la funzionalità di tabella per i vettori di eliminazione non può essere rimossa, anche se successivamente si disabilitano i vettori di eliminazione nella vista o nella tabella.
- Non è possibile eseguire
REORG
su viste materializzate o tabelle di streaming per eseguire il commit delle modifiche registrate nei vettori di eliminazione nei file di dati Parquet che supportano questi oggetti. A causa di questa limitazione, non abilitare i vettori di eliminazione nelle viste materializzate o nelle tabelle di streaming se è necessario garantire l'eliminazione completa dei record (ad esempio, per la conformità al GDPR o al CCPA).