Odebrání nepoužívaných datových souborů pomocí funkce odstraňování dat

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 pro Delta Lake.

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í VACUUMná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.
  • 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 eventsTable   -- vacuum files not required by versions older than the default retention period

VACUUM '/data/events' -- vacuum files in path-based table

VACUUM delta.`/data/events/`

VACUUM delta.`/data/events/` RETAIN 100 HOURS  -- vacuum files not required by versions more than 100 hours old

VACUUM eventsTable 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.

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:

  1. 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.
  2. 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 VACUUMclusteru, pomůže vám pochopit, že operace probíhá ve dvou fázích:

  1. Ú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ě.
  2. 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 falsehodnotu .

Informace o auditu

VACUUM potvrzení do protokolu transakcí Delta obsahují informace o auditu. K dotazování událostí auditu můžete použít DESCRIBE HISTORYpříkaz .