Sdílet prostřednictvím


Odstraňte nepoužívané datové soubory pomocí vakuového procesu

Prediktivní optimalizace automaticky běží na spravovaných tabulkách Katalogu Unity VACUUM. Databricks doporučuje povolit prediktivní optimalizace pro všechny spravované tabulky Unity Catalog, 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 příkazu VACUUM 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žívat prediktivní optimalizaci k automatickému spouštění VACUUM pro tabulky 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 se sémantika VACUUM pro mělké klony, které jsou spravovány pomocí Unity Catalog, liší od ostatních tabulek Delta. Viz Vakuum a Unity Catalog 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 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 VACUUM.

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. Příkaz VACUUM používá tuto prahovou hodnotu k tomu, aby se v danou chvíli podíval na zadanou dobu a identifikoval nejnovější verzi tabulky. 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 vakua 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

Viz VACUUM.

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í. Měkké mazání nevymaže data ani datové soubory, ale místo toho používá metadata k označení, že se některé hodnoty dat změnily. Viz REORG TABLE.

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 tomto nastavení už stará data nejsou v tabulce aktuálních souborech, 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 po dokončení operace vytvoří novou verzi tabulky. Všechny verze tabulek v historii před touto transakcí odkazují na starší datové soubory. Koncepčně se to podobá příkazu OPTIMIZE, kde se datové soubory přepíší, 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 potřebuje vakuum?

Pokud chcete vybrat správnou velikost clusteru pro VACUUM, pomůže vám pochopit, že k operaci dochází 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 Databricks doporučuje následující, zejména pro dlouhotrvající úlohy údržby:

  • Spustit údržbu vakua na clusteru s nastaveným automatickým škálováním pro 1 až 4 pracovní jednotky, kde každá pracovní jednotka má 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 neuložené soubory mohou být stále používány souběžnými čtenáři nebo zapisovači do tabulky. Pokud VACUUM vyčistí aktivní soubory, souběžné čtenáře můžou selhat nebo horší, mohou být tabulky poškozeny, když VACUUM odstraní soubory, které ještě nebyly potvrzeny. Je nutné zvolit interval, který je delší než nejdelší spuštěná souběžná transakce, a také delší než nejdelší období, po které může kterýkoli 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 konfigurace Sparku spark.databricks.delta.retentionDurationCheck.enabled na false.

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 .