VACUUM
Van toepassing op: Databricks SQL Databricks Runtime
Verwijder ongebruikte bestanden uit een tabelmap.
Notitie
Deze opdracht werkt anders, afhankelijk van of u aan een Delta- of Apache Spark-tabel werkt.
Een Delta-tabel leegmaken
Recursief vacuümmappen die zijn gekoppeld aan de Delta-tabel. Zie Ongebruikte gegevensbestanden verwijderen met vacuümvoor meer informatie en beperkingen.
VACUUM
verwijdert alle bestanden uit de tabelmap die niet worden beheerd door Delta, evenals gegevensbestanden die niet langer de meest recente status van het transactielogboek voor de tabel hebben en ouder zijn dan een bewaardrempel.
VACUUM
slaat alle mappen over die beginnen met een onderstrepingsteken (_
), inclusief de _delta_log
. Het partitioneren van uw tabel op een kolom die begint met een onderstrepingsteken is een uitzondering op deze regel; VACUUM
scant alle geldige partities die zijn opgenomen in de doel-Delta-tabel. Delta-tabelgegevensbestanden worden verwijderd op basis van de tijd dat ze logisch zijn verwijderd uit het transactielogboek van Delta plus retentieuren, niet de wijzigingstijdstempels op het opslagsysteem. De standaarddrempelwaarde is 7.
In Delta-tabellen Azure Databricks niet automatischVACUUM
bewerkingen activeren.
Als u VACUUM
op een Delta-tabel uitvoert, verliest u de mogelijkheid om terug te in de tijd te reizen naar een versie die ouder is dan de opgegeven gegevensretentieperiode.
Waarschuwing
Het is raadzaam om een bewaarinterval in te stellen op ten minste 7 dagen, omdat oude momentopnamen en niet-verzonden bestanden nog steeds in gebruik kunnen zijn door gelijktijdige lezers of schrijvers aan de tabel. Als VACUUM
actieve bestanden opschoont, kunnen gelijktijdige lezers mislukken of, erger, tabellen beschadigd raken wanneer VACUUM
bestanden verwijdert die nog niet zijn doorgevoerd. U moet een interval kiezen dat langer is dan de langstlopende gelijktijdige transactie en de langste periode die elke stream achter kan blijven bij de meest recente update van de tabel.
Delta Lake heeft een veiligheidscontrole om te voorkomen dat u een gevaarlijke VACUUM
opdracht uitvoert. In Databricks Runtime weet u zeker dat er geen bewerkingen worden uitgevoerd in deze tabel die langer duren dan het retentieinterval dat u wilt opgeven. U kunt deze veiligheidscontrole uitschakelen door de Spark-configuratie-eigenschap in te stellen spark.databricks.delta.retentionDurationCheck.enabled
op false
.
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
In Databricks Runtime 16.0 en eerder moet RETAIN num HOURS
voorafgaan aan DRY RUN
in de syntaxis.
Belangrijk
Het bewaarvenster voor de opdracht VACUUM
wordt bepaald door de eigenschap delta.deletedFileRetentionDuration
tabel, die standaard 7 dagen is.
Dit betekent dat VACUUM
gegevensbestanden verwijdert waarnaar in de afgelopen 7 dagen niet meer wordt verwezen door een Delta-tabelversie.
Als u gegevens gedurende een langere periode wilt bewaren, bijvoorbeeld om tijdreizen voor langere duur te ondersteunen, stelt u deze tabeleigenschap in op een hogere waarde.
In het volgende voorbeeld ziet u hoe u deze drempelwaarde instelt op 30 dagen:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Parameters
-
Identificeert een bestaande Delta-tabel. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten.
RETAIN num HOURS
De drempelwaarde voor retentie.
DRY RUN
Retourneert een lijst met maximaal 1000 bestanden die moeten worden verwijderd.
FULL
ofLITE
nl-NL: Van toepassing op: Databricks SQL Databricks Runtime 16.1 en hoger
FULL
voert de vacuümbewerking uit in de volledige -modus. Hiermee verwijdert u gegevensbestanden buiten de bewaarduur en alle bestanden in de tabelmap waarnaar niet wordt verwezen door de tabel.LITE
voert de vacuümbewerking uit in Lite modus. In plaats van alle bestanden in de tabelmap te vinden, gebruiktVACUUM
het Delta-transactielogboek om bestanden te identificeren en te verwijderen waarnaar niet meer wordt verwezen door tabelversies binnen de retentieduur. AlsVACUUM LITE
niet kan worden voltooid omdat het Delta-logboek is opgeschoond, wordt er een DELTA_CANNOT_VACUUM_LITE uitzondering gegenereerd.De standaardwaarde is
FULL
.
Een niet-Delta-tabel opschonen
Recursief verwijdert mappen die verbonden zijn aan de niet-Delta-tabel en verwijdert niet-verzette bestanden ouder dan een retentietijdslimiet. De standaarddrempelwaarde is 7.
In niet-Delta-tabellen activeert Azure Databricks automatisch VACUUM
bewerkingen wanneer gegevens worden geschreven.
Syntaxis
VACUUM table_name [RETAIN num HOURS]
Parameters
-
Identificeert een bestaande tabel op naam of pad.
RETAIN num HOURS
De drempelwaarde voor retentie.