Rensa bearbetade filer med Auto Loader

Anmärkning

cloudFiles.cleanSource finns tillgänglig i Databricks Runtime 16.4 och uppåt.

Använd cloudFiles.cleanSource för att flytta eller ta bort filer från källkatalogen efter att de har behandlats. Att ta bort processade filer minskar lagringskostnaderna och förkortar varaktigheten av framtida listningsoperationer.

Mode Description
OFF (standardinställning) Filerna i källkatalogen flyttas eller raderas inte.
MOVE Filerna i källkatalogen flyttas till den sökväg som anges av cloudFiles.cleanSource.moveDestination efter lagringstiden (standard 30 dagar) definierad av cloudFiles.cleanSource.retentionDuration elapses.
DELETE Filerna i källkatalogen raderas efter lagringstiden (standard 30 dagar) definierad av cloudFiles.cleanSource.retentionDuration elapses.
Ytterligare alternativ Standardinställning Giltiga värden Description
cloudFiles.cleanSource.retentionDuration 30 days En CalendarInterval-sträng som 14 days, 2 weekseller 1 month Tiden att vänta innan behandlade filer blir kandidater för sanering med ren källa. Måste vara längre än 7 dagar för DELETE. Ingen minsta begränsning för MOVE.
cloudFiles.cleanSource.waitForCompletion false true, false Detta alternativ finns tillgängligt i Databricks Runtime 19 och uppåt.
Ren källkod är per automatik en bästa insats. Om strömmen slutför bearbetningen av filer innan ren källkod är klar med att flytta eller radera filer, avslutas operationen med rensad källkod. Inställningen cloudFiles.cleanSource.waitForCompletion tvingar strömmen att förbli levande tills ren källkod är klar med att flytta eller radera filer. Detta kan öka strömmens körtid om det finns många filer att radera.
Detta gäller bara när strömmen slutförs av sig själv (till exempel en availableNow trigger som tömmer alla filer). Att manuellt stoppa eller avbryta strömmen avslutar omedelbart cleansource-operationen, även när detta alternativ är inställt.
cloudFiles.cleanSource.moveDestination None En molnlagrings- eller Unity Catalog-volymsökväg Sökväg för att arkivera bearbetade filer när cloudFiles.cleanSource är inställt på MOVE. Det kan vara en molnlagringssökväg eller en volymsökväg för Unity Catalog (till exempel /Volumes/my_catalog/my_schema/my_volume/archive/).
Flyttplatsen måste:
  • Inte underordnad källkatalogen. Om du placerar flyttmålet i källkatalogen matas de arkiverade filerna in igen.
  • Var på samma externa plats, volym eller DBFS-montering som källan. Flyttningar mellan bucketar och containrar stöds inte och resulterar i ett fel.

Automatisk inläsare måste ha skrivbehörighet till den här katalogen.

Överväganden innan möjliggörande cloudFiles.cleanSource

  • Azure Databricks rekommenderar inte att använda detta alternativ när flera strömmar konsumerar data från samma källkatalog. Den snabbaste strömmen rensar filerna, så de långsammare strömmarna tar aldrig in dem.
  • För att aktivera den här funktionen krävs att Auto Loader behåller ytterligare tillstånd i sin kontrollpunkt, vilket medför prestandakostnader men möjliggör förbättrad observerbarhet via cloud_files_state funktionen tabellvärde. Se cloud_files_state tabellvärdesfunktion.
  • Clean source använder den aktuella inställningen för att avgöra om det ska eller MOVEDELETE en given fil. Anta till exempel att inställningen var MOVE när filen ursprungligen bearbetades men ändrades till DELETE när filen blev kandidat för rensning 30 dagar senare. I detta fall raderar ren källkod filen.
  • Filer garanteras inte att rensas så snart de cloudFiles.cleanSource.retentionDuration upphör att gälla. För att hålla kostnaderna låga rensar Auto Loader filer samtidigt som strömbearbetningen och avslutar så snart strömbehandlingen är klar eller avslutas. Filer som var kandidater för rensning, men som inte kunde rensas under strömbearbetningen, plockas upp nästa gång Auto Loader körs.

Anteckningar om ren källa

  • Ren källkod körs bara om det finns en batch filer att bearbeta. Det är inte en bakgrundsprocess som sker oberoende av intag. Om det inte finns några nya filer att inge i källkatalogen startar inte ren källkod för den aktuella strömkörningen. Som ett resultat, om en ström slutar ta emot nya filer, rensas filer som redan passerat sin lagringstid inte förrän en senare ström kör en ny batch.

    Detta batchkrav gäller oavsett .cloudFiles.cleanSource.waitForCompletion Det alternativet håller bara streamen vid liv tillräckligt länge för att avsluta en pågående rensning inom en genomspelning. Den startar inte ren källa när det inte finns någon batch att bearbeta.

  • Om en fil hämtas under den n:te strömkörningen sätts för commit_time filen på N+1-strömkörningen. commit_time måste ställas in innan ren källkod kan avgöra om en fil är berättigad att flytta eller radera, så det tidigaste en fil kan bli kandidat för rensning är N+2 strömkörningen.

  • Miljön commit_time är nödvändig men inte tillräcklig. En fil rensas endast när dess lagringstid har förflutit, mätt från dess commit_time. Till exempel, med standarden cloudFiles.cleanSource.retentionDuration 30 dagar, är en fil som behandlas idag inte berättigad till rensning förrän 30 dagar efter att den commit_time satts. Detta gäller oavsett hur många bäckrunder som sker däremellan. Båda villkoren måste vara uppfyllda innan filen flyttas eller raderas.