Che cosa sono i vettori di eliminazione?

I vettori di eliminazione sono una funzionalità di ottimizzazione dell'archiviazione che può essere abilitata 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 corrente della tabella applicando le eliminazioni annotate dai vettori di eliminazione alla versione della tabella più recente.

Databricks consiglia di usare Databricks Runtime 14.3 LTS e versioni successive per scrivere tabelle con vettori di eliminazione per sfruttare 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 prodotti da operazioni di I/O predittive. 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.

È possibile abilitare il supporto per i vettori di eliminazione in una tabella Delta Lake impostando una proprietà di tabella Delta Lake. È possibile abilitare i vettori di eliminazione durante la creazione di tabelle o modificare una tabella esistente, come negli esempi seguenti:

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. Vedere How does Azure Databricks manage Delta Lake feature compatibility?.

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 i file di dati vengono riscritti, come attivato da uno degli eventi seguenti:

  • 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 momento del completamento, ovvero il timestamp da considerare per la soglia di conservazione per consentire VACUUM all'operazione di rimuovere completamente i file eliminati. Vedere Rimuovere i file di dati inutilizzati con vuoto.

Compatibilità con i client Delta

Azure Databricks sfrutta i vettori di eliminazione per alimentare le operazioni di I/O predittive per gli aggiornamenti sul calcolo abilitato per Photon. Vedere Usare l'I/O predittiva per accelerare gli aggiornamenti.

Il supporto per sfruttare i 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 sfruttano i 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. Richiede 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. Richiede 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 in altri client Delta, vedere la documentazione relativa alle integrazioni di OSS Delta Lake.

Limiti

  • UniForm non supporta i vettori di eliminazione.
  • È possibile abilitare i vettori di eliminazione per le viste materializzate, ma per disabilitare i vettori di eliminazione per una vista materializzata, è necessario eliminare la vista materializzata e ricrearla.
  • Non è possibile generare un file manifesto per una tabella con vettori di eliminazione presenti. Per generare un manifesto, eseguire REORG TABLE ... APPLY (PURGE) e 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.