Vyčištění zpracovaných souborů pomocí automatického nakládače

Note

cloudFiles.cleanSource je dostupný v Databricks Runtime 16.4 a novějších.

Používá cloudFiles.cleanSource se k přesunu nebo mazání souborů ze zdrojového adresáře po jejich zpracování. Odstranění zpracovaných souborů snižuje náklady na ukládání a zkracuje dobu budoucích operací s nabídkami.

Mode Description
OFF (výchozí) Soubory ve zdrojovém adresáři nejsou přesouvány ani mazány.
MOVE Soubory ve zdrojovém adresáři jsou přesunuty na cestu určenou po cloudFiles.cleanSource.moveDestination uplynutí doby uchovávání (výchozích 30 dní) definované elaps cloudFiles.cleanSource.retentionDuration .
DELETE Soubory ve zdrojovém adresáři jsou smazány po uplynutí doby uchovávání (výchozích 30 dní) definované uplynutím lhůt.cloudFiles.cleanSource.retentionDuration
Další možnost Výchozí Platné hodnoty Description
cloudFiles.cleanSource.retentionDuration 30 days Řetězec CalendarInterval, například 14 days, 2 weeksnebo1 month Doba čekání, než se zpracované soubory stanou kandidáty na vyčištění s čistým zdrojem. Musí být delší než 7 dní pro DELETE. Žádné minimální omezení pro MOVE.
cloudFiles.cleanSource.waitForCompletion false true, false Tato možnost je dostupná v Databricks Runtime 19 a vyšších.
Čistý zdroj je ve výchozím nastavení operace s nejlepším úsilím. Pokud stream dokončí zpracování souborů dříve, než čistý zdroj dokončí přesun nebo smazání souborů, operace čistého zdroje je ukončena. Nastavení cloudFiles.cleanSource.waitForCompletion nutí stream zůstat naživu, dokud čistý zdroj nedokončí přesun nebo smazání souborů. To může prodloužit dobu běhu streamu, pokud je potřeba smazat hodně souborů.
To platí pouze tehdy, když se stream dokončí sám od sebe (například spouštěč, availableNow který vyčerpá všechny soubory). Ruční zastavení nebo zrušení streamu okamžitě ukončí operaci čistého zdroje, i když je tato možnost nastavena.
cloudFiles.cleanSource.moveDestination None Cesta ke svazku cloudového úložiště nebo katalogu Unity Cesta k archivování zpracovaných souborů, kam se ukládají, když je cloudFiles.cleanSource nastaveno na MOVE. Může se jednat o cestu ke cloudovému úložišti nebo cestu ke svazku katalogu Unity (například /Volumes/my_catalog/my_schema/my_volume/archive/).
Umístění přesunutí musí:
  • Nejedná se o podřízenou část zdrojového adresáře. Pokud umístíte cíl přesunutí do zdrojového adresáře, archivované soubory se znovu ingestují.
  • Musí být ve stejném externím umístění, svazku nebo DBFS jako zdroj. Přesuny mezi buckety a mezi kontejnery se nepodporují a výsledkem je chyba.

Automatický zavaděč musí mít oprávnění k zápisu do tohoto adresáře.

Úvahy před umožněním cloudFiles.cleanSource

  • Azure Databricks nedoporučuje používat tuto možnost, pokud více streamů spotřebovává data ze stejného zdrojového adresáře. Nejrychlejší stream soubory vyčistí, takže pomalejší streamy je nikdy nepřijmou.
  • Povolení této funkce vyžaduje automatické zavaděče, aby zachoval další stav v kontrolním bodu, což způsobuje režii na výkon, ale umožňuje lepší pozorovatelnost prostřednictvím cloud_files_state funkce s hodnotou tabulky. Viz tabulkovou funkci cloud_files_state.
  • Clean source používá aktuální nastavení k rozhodnutí, zda použít MOVEDELETE daný soubor. Například předpokládejme, že nastavení bylo MOVE , když byl soubor původně zpracován, ale změnilo se na DELETE , když se soubor stal kandidátem na odstranění 30 dní později. V tomto případě soubor smaže čistý zdroj.
  • Soubory nejsou zaručeny, že se vyčistí, jakmile cloudFiles.cleanSource.retentionDuration vyprší jeho platnost. Aby byly náklady nízké, Auto Loader čistí soubory současně se zpracováním streamu a ukončuje ho hned, jakmile je zpracování streamu dokončeno nebo ukončeno. Soubory, které byly kandidáty na vyčištění, ale nemohly být vyčištěny během zpracování streamu, se při dalším spuštění Auto Loaderu zachytí.

Poznámky o čistém zdroji

  • Čistý zdroj běží pouze tehdy, pokud je k dispozici dávka souborů ke zpracování. Není to proces na pozadí, který by běžel nezávisle na požití. Pokud nejsou žádné nové soubory k ingestování ve zdrojovém adresáři, čistý zdroj se pro aktuální stream run nespustí. Pokud tedy proud přestane přijímat nové soubory, soubory, které již překročily dobu uchovávání, nejsou vymazány, dokud nejde o další spuštění toku s novou dávkou.

    Tento požadavek na dávku platí bez ohledu na .cloudFiles.cleanSource.waitForCompletion Tato možnost udržuje stream naživu jen tak dlouho, aby se dokončilo probíhající úklid během jednoho běhu. Nespustí čistý zdroj, pokud není dávka ke zpracování.

  • Pokud je soubor přijat při N-tém běhu proudu, pro commit_time soubor je nastaven na N+1 běh proudu. commit_time musí být nastaveno dříve, než čistý zdroj může určit, zda je soubor způsobilý k přesunu nebo smazání, takže nejdříve se soubor může stát kandidátem na vyčištění, je N+2 stream run.

  • Prostředí commit_time je nutné, ale nestačí. Soubor se čistí pouze poté, co uplyne doba jeho uchovávání, měřeno od jeho commit_time. Například při výchozí cloudFiles.cleanSource.retentionDuration 30 dnech není dnes zpracovaný soubor způsobilý k vyčištění dříve než 30 dní po commit_time jeho nastavení. To platí bez ohledu na to, kolik potoků se mezi tím uskuteční. Obě podmínky musí být splněny před přesunem nebo smazáním souboru.