Condividi tramite


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, UPDATEe le operazioni di MERGE 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 DELETEdelle operazioni , MERGEe 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 sono non 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 proprietà della tabella delta.enableDeletionVectors. È 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. Consulta le funzioni della tabella delta di drop .

Applicare modifiche ai file di dati Parquet

I vettori di eliminazione indicano modifiche alle righe come eliminazioni temporanee 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:

  • Un comando OPTIMIZE viene eseguito nella tabella.
  • 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. Vedi REORG TABLE.

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 che devi considerare nel determinare la soglia di conservazione per l'operazione di VACUUM al fine di rimuovere del tutto i file eliminati. Vedere Rimuovere i file di dati inutilizzati con vacuum.

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, 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 di Delta Sharing Le scritture non sono supportate nelle tabelle di Delta Sharing 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, è necessario prima eseguire un'istruzione REORG TABLE ... APPLY (PURGE) e successivamente eseguire l'istruzione GENERATE. Quando si invia l'istruzione REORG , è 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à della tabella delta.compatibility.symlinkFormatManifest.enabled=true).
  • Se si abilitano i 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 potranno utilizzare i vettori di eliminazione, ma i vettori di eliminazione esistenti non verranno 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 nelle viste materializzate o nelle tabelle di streaming per eseguire il commit delle modifiche registrate da vettori di eliminazione nei file di dati Parquet a supporto di 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).