Odebrání nepoužívaných datových souborů pomocí funkce odstraňování dat
Prediktivní optimalizace se automaticky spouští VACUUM
ve spravovaných tabulkách katalogu Unity. Databricks doporučuje povolit prediktivní optimalizace pro všechny spravované tabulky Služby Unity, aby se zjednodušila údržba dat a snížily náklady na úložiště. Viz Prediktivní optimalizace spravovaných tabulek v katalogu Unity.
Datové soubory, na které už neodkazuje tabulka Delta, která je starší než prahová hodnota uchovávání, můžete odebrat spuštěním VACUUM
příkazu v tabulce. Pravidelné spouštění VACUUM
je důležité pro náklady a dodržování předpisů z následujících důvodů:
- Odstranění nepoužívaných datových souborů snižuje náklady na cloudové úložiště.
- Datové soubory odebrané
VACUUM
můžou obsahovat záznamy, které byly změněny nebo odstraněny. Trvalé odebrání těchto souborů z cloudového úložiště zajistí, že tyto záznamy už nebudou přístupné.
Upozornění na vakuum
Výchozí prahová hodnota uchovávání datových souborů po spuštění VACUUM
je 7 dnů. Pokud chcete toto chování změnit, přečtěte si téma Konfigurace uchovávání dat pro dotazy na časové cesty.
VACUUM
může po odebrání všech souborů z nich ponechat prázdné adresáře. Následné VACUUM
operace odstraňují tyto prázdné adresáře.
Databricks doporučuje použít prediktivní optimalizaci pro automatické spouštění VACUUM
tabulek Delta. Viz Prediktivní optimalizace spravovaných tabulek v katalogu Unity.
Některé funkce Delta Lake používají soubory metadat k označení dat jako odstraněných místo přepsání datových souborů. Tyto odstranění můžete REORG TABLE ... APPLY (PURGE)
potvrdit a přepsat datové soubory. Viz Odstranění metadat pouze k vynucení přepsání dat.
Důležité
- V Databricks Runtime 13.3 LTS a novějších
VACUUM
se sémantika pro mělké klony se spravovanými tabulkami Unity Catalog liší od ostatních tabulek Delta. Viz vakuové a unity katalog mělké klony. -
VACUUM
odebere všechny soubory z adresářů, které nespravuje Delta Lake, ignoruje adresáře začínající_
na nebo.
. Pokud ukládáte další metadata, jako jsou kontrolní body strukturovaného streamování v adresáři tabulky Delta, použijte název adresáře, například_checkpoints
.- Data pro změnu datového kanálu se spravují službou Delta Lake v
_change_data
adresáři a odeberou se pomocíVACUUM
nástroje . Viz Použití datového kanálu změn Delta Lake v Azure Databricks. - Indexy filtru Bloom používají
_delta_index
adresář spravovaný službou Delta Lake.VACUUM
vyčistí soubory v tomto adresáři. Viz indexy filtru Bloom.
- Data pro změnu datového kanálu se spravují službou Delta Lake v
- Možnost dotazovat verze tabulek starší než doba uchovávání je ztracena po spuštění
VACUUM
. - Soubory protokolu se odstraní automaticky a asynchronně po operacích kontrolních bodů a nejsou řízeny
VACUUM
. I když je výchozí doba uchovávání souborů protokolu 30 dní, spuštěníVACUUM
v tabulce odebere datové soubory potřebné pro časovou cestu.
Poznámka:
Pokud je ukládání do mezipaměti na disku povolené, cluster může obsahovat data ze souborů Parquet, které byly odstraněny pomocí VACUUM
. Proto může být možné dotazovat data předchozích verzí tabulek, jejichž soubory byly odstraněny. Restartováním clusteru se odeberou data uložená v mezipaměti. Viz Konfigurace mezipaměti disku.
Příklad syntaxe pro vakuum
VACUUM table_name -- vacuum files not required by versions older than the default retention period
VACUUM table_name RETAIN 100 HOURS -- vacuum files not required by versions more than 100 hours old
VACUUM table_name DRY RUN -- do dry run to get the list of files to be deleted
Podrobnosti o syntaxi Spark SQL najdete v tématu VAKUO.
Podrobnosti o syntaxi jazyka Scala, Java a Python najdete v dokumentaci k rozhraní Delta Lake API.
Poznámka:
Pomocí klíčového RETAIN
slova určete prahovou hodnotu použitou k určení, jestli se má datový soubor odebrat. Tento VACUUM
příkaz používá tuto prahovou hodnotu k vyhledání zadaného časového limitu a identifikaci nejnovější verze tabulky v daném okamžiku. Delta uchovává všechny datové soubory potřebné k dotazování na danou verzi tabulky a všechny novější verze tabulek. Toto nastavení komunikuje s jinými vlastnostmi tabulky. Viz Konfigurace uchovávání dat pro dotazy na časové cesty.
Plný vs. lehký režim
Důležité
Tato funkce je ve verzi Public Preview v Databricks Runtime 16.1 a vyšší.
V příkazu vacuum můžete zadat klíčové slovo LITE
, které aktivuje alternativní režim VACUUM
a zabrání tak výpisu všech souborů v adresáři tabulky.
LITE
režim používá protokol transakcí Delta k identifikaci datových souborů, které již nejsou v rámci prahové hodnoty uchovávání VACUUM
, a odebere tyto datové soubory z tabulky.
LITE
režim je zvlášť užitečný pro velké tabulky, které vyžadují časté operace VACUUM
, protože není nutné vypsat všechny soubory k identifikaci těchto datových souborů, které se mají odebrat.
Poznámka:
Spuštění VACUUM
v režimu LITE
neodstraní žádné soubory, na které se v transakčním protokolu neodkazují. Například soubory vytvořené přerušenou transakcí.
K VACUUM
v režimu LITE
použijte následující syntaxi:
VACUUM table_name LITE
LITE
režim má následující požadavek:
- Musíte spustit alespoň jednu úspěšnou operaci
VACUUM
v rámci nakonfigurované prahové hodnoty uchovávání transakčního protokolu (ve výchozím nastavení 30 dnů).
Pokud tento požadavek není splněn, zobrazí se při pokusu o spuštění VACUUM
v režimu LITE
následující chybová zpráva. Chcete-li pokračovat, musíte spustit VACUUM
v režimu FULL
.
VACUUM <tableName> LITE cannot delete all eligible files as some files are not referenced by the Delta log. Please run VACUUM FULL.
FULL
režim je výchozí pro vakuum. Úplný režim můžete explicitně spustit pomocí následujícího příkazu:
VACUUM table_name FULL
Podívejte se na VAKUUM.
Vyprázdnění metadat odstraní, aby se vynutil přepsání dat.
Příkaz REORG TABLE
poskytuje APPLY (PURGE)
syntaxi pro přepsání dat pro použití obnovitelného odstranění. Obnovitelné odstranění nepřepisují data ani neodstraňují datové soubory, ale místo toho používají soubory metadat k označení, že se změnily některé datové hodnoty. Viz TABULKA REORG.
Operace, které vytvářejí obnovitelné odstranění v Delta Lake, zahrnují následující:
- Vyřazení sloupců s povoleným mapováním sloupců
- Odstranění řádků s povolenými vektory odstranění
- Všechny úpravy dat v clusterech s podporou Photon při povolení vektorů odstranění
Když jsou povolené obnovitelné odstranění, můžou stará data zůstat fyzicky přítomná v aktuálních souborech tabulky i po odstranění nebo aktualizaci dat. Pokud chcete tato data fyzicky odebrat z tabulky, proveďte následující kroky:
- Spusťte
REORG TABLE ... APPLY (PURGE)
. Po tom už stará data v aktuálních souborech tabulky neexistují, ale stále se nacházejí ve starších souborech, které se používají pro časovou cestu. - Spuštěním
VACUUM
odstraňte tyto starší soubory.
REORG TABLE
vytvoří novou verzi tabulky, jakmile se operace dokončí. Všechny verze tabulek v historii před touto transakcí odkazují na starší datové soubory. Koncepčně se to podobá OPTIMIZE
příkazu, kde se datové soubory přepíšou, i když data v aktuální verzi tabulky zůstávají konzistentní.
Důležité
Datové soubory se odstraní pouze v případech, kdy vypršela platnost souborů v souladu s VACUUM
dobou uchovávání informací. To znamená, že VACUUM
se musí provést se zpožděním po REORG
vypršení platnosti starších souborů. Dobu VACUUM
uchovávání je možné zkrátit, aby se zkrátila požadovaná doba čekání, a to za cenu snížení maximální historie, která se uchovává.
Jakou velikost clusteru vakuum potřebuje?
Pokud chcete vybrat správnou velikost VACUUM
clusteru, pomůže vám pochopit, že operace probíhá ve dvou fázích:
- Úloha začíná paralelním výpisem souborů ve zdrojovém adresáři pomocí všech dostupných uzlů exekutoru. Tento seznam se porovná se všemi soubory, na které se v transakčním protokolu Delta odkazuje, aby bylo možné identifikovat soubory, které se mají odstranit. Řidič během této doby sedí nečinně.
- Ovladač pak vydá příkazy pro odstranění každého souboru, který se má odstranit. Odstranění souboru je operace jen pro ovladače, což znamená, že všechny operace probíhají v jednom uzlu, zatímco pracovní uzly jsou nečinné.
Pro optimalizaci nákladů a výkonu služba Databricks doporučuje následující, zejména pro dlouhotrvající úlohy vakua:
- Spuštění vakua v clusteru se sadou automatického škálování pro 1 až 4 pracovní procesy, kde má každý pracovní proces 8 jader.
- Vyberte ovladač s 8 až 32 jádry. Zvětšete velikost ovladače, abyste se vyhnuli chybám mimo paměť (OOM).
Pokud VACUUM
operace pravidelně odstraňují více než 10 tisíc souborů nebo trvá déle než 30 minut zpracování, můžete chtít zvětšit velikost ovladače nebo počet pracovníků.
Pokud zjistíte, že při identifikaci souborů, které se mají odebrat, dochází ke zpomalení, přidejte další pracovní uzly. Pokud během spouštění příkazů pro odstranění dojde ke zpomalení, zkuste zvětšit velikost ovladače.
Jak často byste měli spustit vakuum?
Databricks doporučuje pravidelně spouštět VACUUM
na všech tabulkách, aby se snížily nadbytečné náklady na cloudové úložiště dat. Výchozí prahová hodnota uchovávání pro vakuum je 7 dní. Nastavením vyšší prahové hodnoty získáte přístup k větší historii tabulky, ale zvýší se počet uložených datových souborů a v důsledku toho se od poskytovatele cloudu zvýší náklady na úložiště.
Proč nemůžete vysávat tabulku Delta s nízkou prahovou hodnotou uchování?
Upozorňující
Doporučujeme nastavit interval uchovávání nejméně 7 dní, protože staré snímky a nepotvrzené soubory se dají do tabulky dál používat souběžnými čtenáři nebo zapisovači. Pokud VACUUM
vyčistí aktivní soubory, souběžné čtenáře můžou selhat nebo horší, může být při odstranění souborů, které ještě nebyly potvrzeny, poškozeny VACUUM
tabulky. Musíte zvolit interval, který je delší než nejdéle běžící souběžná transakce, a nejdelší dobu, po kterou může jakýkoli datový proud zaostávat za nejnovější aktualizací tabulky.
Delta Lake má bezpečnostní kontrolu, abyste zabránili spuštění nebezpečného VACUUM
příkazu. Pokud jste si jisti, že v této tabulce nejsou provedeny žádné operace, které by trvalo déle, než je interval uchovávání informací, který chcete zadat, můžete tuto bezpečnostní kontrolu vypnout nastavením vlastnosti spark.databricks.delta.retentionDurationCheck.enabled
konfigurace Sparku na false
hodnotu .
Informace o auditu
VACUUM
potvrzení do protokolu transakcí Delta obsahují informace o auditu. K dotazování událostí auditu můžete použít DESCRIBE HISTORY
příkaz .