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 vettori di eliminazione accelerano le operazioni DELETE, UPDATE e MERGE sulle tabelle Delta Lake e Apache Iceberg. Senza vettori di eliminazione, la modifica di una singola riga richiede la riscrittura dell'intero file Parquet contenente tale record. I vettori di eliminazione contrassegnano invece le righe come modificate nei metadati e le letture applicano le voci del vettore di eliminazione in fase di query per risolvere lo stato corrente della tabella.
Nota
Per gli aggiornamenti di I/O predittivi, Photon utilizza vettori di eliminazione per accelerare le operazioni DELETE, MERGE e UPDATE. Vedere Usare l'I/O predittiva per accelerare gli aggiornamenti.
Prerequisites
Tutte le tabelle Apache Iceberg v3 includono vettori di eliminazione per impostazione predefinita. Vedere Usare le funzionalità di Apache Iceberg v3. Per le tabelle Delta Lake, è necessario abilitare in modo esplicito i vettori di eliminazione.
Per scrivere tabelle con vettori di eliminazione usando tutte le ottimizzazioni, usare Databricks Runtime 14.3 LTS e versioni successive. Per leggerli, usare 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. Consulta Concorrenza a livello di riga.
Compatibilità client
Azure Databricks utilizza vettori di cancellazione per ottimizzare le operazioni di I/O predittive per gli aggiornamenti nel calcolo abilitato da 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.
Nella tabella seguente sono elencate le versioni client necessarie per leggere e scrivere tabelle vettoriali di eliminazione:
| Client | Scrivere vettori di eliminazione | Leggere i vettori di eliminazione |
|---|---|---|
| Databricks Runtime con Photon | Supporta MERGE, UPDATEe 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 OpenSharing | Le operazioni di scrittura non sono consentite sulle tabelle OpenSharing. | Azure Databricks richiede Databricks Runtime 14.1 o versione successiva. Apache Spark open source richiede delta-sharing-spark la versione 3.1 o successiva. |
Per il supporto con altri client, vedere la documentazione relativa alle integrazioni di OSS Delta Lake.
Abilitare i vettori di eliminazione
Nelle impostazioni dell'area di lavoro è possibile abilitare i vettori di eliminazione nelle nuove tabelle quando si usa un'istanza di SQL Warehouse o Databricks Runtime 14.3 LTS o versione successiva. Le impostazioni predefinite variano in base all'area, vedere Vettori di eliminazione con abilitazione automatica.
I vettori di eliminazione non sono abilitati per impostazione predefinita per le viste materializzate e le tabelle di streaming archiviate nel metastore Hive.
Per abilitare o rimuovere manualmente vettori di eliminazione in qualsiasi tabella o vista, utilizzare la enableDeletionVectors proprietà table.
Per abilitare i vettori di eliminazione in una tabella quando si crea o si modifica una tabella:
Delta Lake
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Tabella Iceberg
CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
Non è possibile usare un'istruzione ALTER per abilitare o rimuovere vettori di eliminazione in una vista materializzata o in una tabella di streaming. È necessario usare un'istruzione CREATE TABLE .
Warning
Quando si abilitano i vettori di eliminazione, Databricks aggiorna il protocollo di tabella. Dopo l'aggiornamento, i client senza supporto del vettore di eliminazione non possono leggere la tabella. Vedere Compatibilità e protocolli delle funzionalità 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. Vedere Eliminare una funzionalità di tabella Delta Lake e effettuare il downgrade del protocollo di tabella.
Applicare eliminazioni temporanea ai file di dati
I vettori di eliminazione contrassegnano come eliminazioni logiche le modifiche apportate alle righe, che modificano logicamente i file di dati Parquet esistenti della tabella. Per riscrivere fisicamente i file di dati Parquet, eseguire una delle operazioni seguenti:
- Esegui
OPTIMIZEsul tavolo. - Esegui
REORG TABLE ... APPLY (PURGE)sul tavolo. Questo comando riscrive tutti i file di dati contenenti record con modifiche al vettore di eliminazione. Vedete REORG TABLE. - Eseguire una scrittura con compattazione automatica, che attiva una riscrittura di un file di dati con un vettore di eliminazione.
Gli eventi di compattazione dei file non hanno garanzie rigorose per la risoluzione delle modifiche registrate nei vettori di eliminazione. Alcune modifiche registrate nei vettori di eliminazione potrebbero non essere applicate fisicamente se i file di dati di destinazione non sono candidati per la compattazione dei file.
Eliminare fisicamente i dati obsoleti
I dati modificati potrebbero essere ancora presenti nei file di dati precedenti di una tabella dopo un'operazione di eliminazione. È possibile rimuovere fisicamente i dati, ad esempio, per ridurre i costi di archiviazione con il provider di servizi cloud o per rispettare le richieste GDPR.
Per eliminare fisicamente i dati obsoleti:
- Eseguire
REORG TABLE ... APPLY (PURGE) - Esegui
VACUUMcon la soglia di conservazione impostata sul timestamp di completamento della purga per rimuovere fisicamente i file dalle versioni precedenti della tabella. Per forzare la riscrittura dei dati, vedere Eliminare solo i metadati.
Migliorare le prestazioni per tabelle di grandi dimensioni
Per migliorare le prestazioni delle operazioni di eliminazione su tabelle di grandi dimensioni, impostare spark.databricks.delta.reorg.purgeMode su rows.
Ad esempio, impostare questa configurazione quando si eliminano i dati manualmente con REORG TABLE ... APPLY (PURGE) o quando si rimuovono vettori di eliminazione con ALTER TABLE DROP FEATURE deletionVectors.
Per impostazione predefinita, spark.databricks.delta.reorg.purgeMode è impostato su all. Nelle tabelle di grandi dimensioni, questa operazione potrebbe essere lenta perché le operazioni di eliminazione devono analizzare tutti i piè di pagina dei file Parquet per verificare la presenza di dati delle colonne eliminate e di righe eliminate affatto.
Il valore rows limita l'operazione per gestire solo i file con righe eliminate in modo soft. Nelle tabelle di grandi dimensioni, questo potrebbe migliorare le prestazioni se molti file non contengono righe eliminate affatto e la tabella non contiene colonne eliminate.
Limitazioni
- UniForm Iceberg v2 non supporta i vettori di eliminazione. Apache Iceberg v3 supporta vettori di eliminazione nelle tabelle con UniForm abilitato. Vedere Usare le funzionalità di Apache Iceberg v3.
- 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, è necessario prima eseguire un'istruzione REORG TABLE ... APPLY (PURGE) e successivamente eseguire l'istruzione
GENERATE. È necessario verificare che non siano in esecuzione operazioni di scrittura simultanee quando si invia l'istruzioneREORG.- Non è possibile generare in modo incrementale i file manifesto per una tabella con vettori di eliminazione abilitati, ad esempio impostando la proprietà della tabella
delta.compatibility.symlinkFormatManifest.enabled=true).
- Non è possibile generare in modo incrementale i file manifesto per una tabella con vettori di eliminazione abilitati, ad esempio impostando la proprietà della tabella
- Se si abilitano i vettori di eliminazione in una vista materializzata o in una tabella di streaming e successivamente si rimuovono vettori di eliminazione, i vettori di eliminazione non si applicano alle scritture future nella vista o nella tabella, ma i vettori di eliminazione esistenti rimangono.
- 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, anche se successivamente si disattivano i vettori di eliminazione.