Verwijderingsvectoren in Databricks

Verwijderingsvectoren versnellen DELETE, UPDATE en MERGE-bewerkingen op Delta Lake- en Apache Iceberg-tabellen. Zonder verwijderingsvectoren vereist het wijzigen van één enkele rij het herschrijven van het volledige Parquet-bestand dat dat record bevat. Verwijderingsvectoren markeren rijen zoals gewijzigd in metagegevens en leesbewerkingen passen de verwijderingsvectorvermeldingen op het moment van de query toe om de huidige tabelstatus op te lossen.

Note

Voor voorspellende I/O-updates gebruikt Photon verwijderingsvectoren om te versnellen DELETE, MERGEen UPDATE bewerkingen. Zie Voorspellende I/O gebruiken om updates te versnellen.

Prerequisites

Alle Apache Iceberg v3-tabellen bevatten standaard verwijderingsvectoren. Zie Apache Iceberg v3-functies gebruiken. Voor Delta Lake-tabellen moet u expliciet verwijderingsvectoren inschakelen.

Als u tabellen wilt schrijven met verwijderingsvectoren met behulp van alle optimalisaties, gebruikt u Databricks Runtime 14.3 LTS en hoger. Als u ze wilt lezen, gebruikt u Databricks Runtime 12.2 LTS en hoger.

In Databricks Runtime 14.2 en hoger ondersteunen tabellen met verwijderingsvectoren gelijktijdigheid op rijniveau. Zie concurrentie op rijniveau.

Clientcompatibiliteit

Azure Databricks gebruikt verwijderingsvectoren om voorspellende invoer/uitvoer te verbeteren voor updates op Photon-ingeschakelde compute. Zie Voorspellende I/O gebruiken om updates te versnellen.

Ondersteuning voor het gebruik van verwijderingsvectoren voor lees- en schrijfbewerkingen verschilt per client.

De volgende tabel bevat clientversies die vereist zijn voor het lezen en schrijven van verwijderingsvectortabellen:

Client Verwijderingsvectoren schrijven Verwijderingsvectoren lezen
Databricks Runtime met Photon Ondersteunt MERGE, UPDATE, en DELETE met Databricks Runtime 12.2 LTS en hoger. Vereist Databricks Runtime 12.2 LTS of hoger.
Databricks Runtime zonder Photon Ondersteunt DELETE het gebruik van Databricks Runtime 12.2 LTS en hoger. Ondersteunt UPDATE het gebruik van Databricks Runtime 14.1 en hoger. Ondersteunt MERGE het gebruik van Databricks Runtime 14.3 LTS en hoger. Vereist Databricks Runtime 12.2 LTS of hoger.
OSS Apache Spark met OSS Delta Lake Ondersteunt DELETE het gebruik van OSS Delta 2.4.0 en hoger. Ondersteunt UPDATE het gebruik van OSS Delta 3.0.0 en hoger. Vereist OSS Delta 2.3.0 of hoger.
OpenSharing-ontvangers Schrijfbewerkingen worden niet ondersteund op OpenSharing-tabellen. Azure Databricks vereist Databricks Runtime 14.1 of hoger. Open source Apache Spark vereist delta-sharing-spark 3.1 of hoger.

Zie de documentatie over OSS Delta Lake-integraties voor ondersteuning met andere clients.

Verwijderingsvectoren inschakelen

In de werkruimte-instellingen kunt u verwijderingsvectoren voor nieuwe tabellen inschakelen wanneer u een SQL Warehouse of Databricks Runtime 14.3 LTS of hoger gebruikt. De standaardinstellingen variëren per regio. Zie Verwijdervectoren automatisch inschakelen.

Verwijderingsvectoren zijn niet standaard ingeschakeld voor gerealiseerde weergaven en streamingtabellen die zijn opgeslagen in hive-metastore.

Als u verwijderingsvectoren handmatig wilt in- of verwijderen voor een tabel of weergave, gebruikt u de enableDeletionVectors tabeleigenschap.

Verwijdervectoren in een tabel inschakelen wanneer u een tabel maakt of wijzigt:

Delta Lake

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Ijsbergtabel

CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

U kunt geen ALTER statement gebruiken om verwijderingsvectoren in of uit te schakelen voor een gematerialiseerde weergave of streamingtabel. U moet een CREATE TABLE instructie gebruiken.

Warning

Wanneer u verwijderingsvectoren inschakelt, werkt Databricks het tabelprotocol bij. Na de upgrade kunnen clients zonder ondersteuning voor verwijderingsvector de tabel niet lezen. Bekijk de compatibiliteit en protocollen van Delta Lake-functies.

In Databricks Runtime 14.1 en hoger kunt u de functie verwijderingsvectorentabel verwijderen om compatibiliteit met andere clients mogelijk te maken. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.

Voorlopig verwijderen toepassen op gegevensbestanden

Verwijderingsvectoren markeren wijzigingen aan rijen als soft-deletes die bestaande Parquet-gegevensbestanden in de tabel logisch wijzigen. Ga op een van de volgende manieren te werk om de Parquet-gegevensbestanden fysiek te herschrijven:

  • Voer OPTIMIZE uit op de tabel.
  • Voer REORG TABLE ... APPLY (PURGE) uit op de tabel. Met deze opdracht worden alle gegevensbestanden met records met verwijderingsvectorwijzigingen herschreven. Zie REORG TABLE.
  • Voer een schrijfbewerking uit met automatische compressie, waardoor een herschrijfbewerking van een gegevensbestand met een verwijderingsvector wordt geactiveerd.

Bestandscompressiegebeurtenissen hebben geen strikte garanties voor het oplossen van wijzigingen die zijn vastgelegd in verwijderingsvectoren. Sommige wijzigingen die zijn vastgelegd in verwijderingsvectoren, worden mogelijk niet fysiek toegepast als doelgegevensbestanden geen kandidaten zijn voor het comprimeren van bestanden.

Oude gegevens fysiek verwijderen

Gewijzigde gegevens kunnen nog steeds bestaan in de oude gegevensbestanden van een tabel na een opschoningsbewerking. U kunt de gegevens fysiek verwijderen, bijvoorbeeld om de opslagkosten te verlagen bij uw cloudprovider of om te voldoen aan AVG-aanvragen.

Oude gegevens fysiek verwijderen:

  1. Voer REORG TABLE ... APPLY (PURGE) uit
  2. Voer VACUUM uit met de retentiegrens ingesteld op de tijdstempel van het voltooien van de opschoning om bestanden uit eerdere tabelversies fysiek te verwijderen. Zie Alleen verwijderen van metagegevens opschonen om het herschrijven van gegevens af te dwingen.

Prestaties voor grote tabellen verbeteren

Als u de prestaties voor het opschonen van grote tabellen wilt verbeteren, stelt u deze in op spark.databricks.delta.reorg.purgeModerows.

Stel deze configuratie bijvoorbeeld in wanneer u handmatig gegevens opschoont met REORG TABLE ... APPLY (PURGE) of verwijderingsvectoren verwijdert met ALTER TABLE DROP FEATURE deletionVectors.

Standaard is spark.databricks.delta.reorg.purgeMode ingesteld op all. Bij grote tabellen kan deze bewerking traag zijn omdat opschoningsbewerkingen alle Parquet-bestandsvoetteksten moeten scannen om te controleren op zowel verwijderde kolomgegevens als voorlopig verwijderde rijen.

De rows waarde beperkt de bewerking om alleen bestanden met voorlopig verwijderde rijen te verwerken. In grote tabellen kan dit de prestaties verbeteren als veel bestanden geen voorlopig verwijderde rijen bevatten en de tabel geen verwijderde kolommen bevat.

Limitations

  • UniForm Iceberg v2 biedt geen ondersteuning voor verwijderingsvectoren. Apache Iceberg v3 ondersteunt verwijderingsvectoren voor tabellen waarvoor UniForm is ingeschakeld. Zie Apache Iceberg v3-functies gebruiken.
  • U kunt geen GENERATE instructie gebruiken om een manifestbestand te genereren voor een tabel die bestanden bevat met behulp van verwijderingsvectoren. Voer eerst de instructie REORG TABLE APPLY (PURGE) uit om een manifest te genereren en voer vervolgens de GENERATE-instructie uit. U moet controleren of er geen gelijktijdige schrijfbewerkingen worden uitgevoerd wanneer u de REORG instructie indient.
    • U kunt geen manifestbestanden voor een tabel genereren waarvoor verwijderingsvectoren zijn ingeschakeld (bijvoorbeeld door de tabeleigenschap delta.compatibility.symlinkFormatManifest.enabled=truein te stellen).
  • Als u verwijderingsvectoren inschakelt voor een gerealiseerde weergave of streamingtabel en vervolgens verwijderingsvectoren verwijdert, zijn verwijderingsvectoren niet van toepassing op toekomstige schrijfbewerkingen naar de weergave of tabel, maar blijven bestaande verwijderingsvectoren behouden.
  • U kunt het tabelprotocol niet downgraden nadat u verwijderingsvectoren hebt ingeschakeld voor een gerealiseerde weergave of streamingtabel, zelfs als u de verwijderingsvectoren vervolgens uitschakelt.