Maak verwerkte bestanden schoon met Auto Loader

Note

cloudFiles.cleanSource is beschikbaar in Databricks Runtime 16.4 en hoger.

Gebruik cloudFiles.cleanSource om bestanden uit de bronmap te verplaatsen of te verwijderen nadat ze zijn verwerkt. Het verwijderen van verwerkte bestanden verlaagt opslagkosten en verkort de duur van toekomstige vermeldingsoperaties.

Wijze Description
OFF (standaard) De bestanden in de bronmap worden niet verplaatst of verwijderd.
MOVE De bestanden in de bronmap worden na de door bepaalde bewaarduur (standaard 30 dagen) door elapses naar cloudFiles.cleanSource.retentionDuration het pad gespecificeerdcloudFiles.cleanSource.moveDestination.
DELETE De bestanden in de bronmap worden verwijderd na de bewaartijd (standaard 30 dagen) die door cloudFiles.cleanSource.retentionDuration elapses is gedefinieerd.
Aanvullende optie Default Geldige waarden Description
cloudFiles.cleanSource.retentionDuration 30 days Een CalendarInterval-tekenreeks zoals 14 days, 2 weeksof 1 month Tijd om te wachten voordat verwerkte bestanden kandidaten worden voor schoonmaak met een schone bron. Moet langer zijn dan 7 dagen voor DELETE. Geen minimale beperking voor MOVE.
cloudFiles.cleanSource.waitForCompletion false true, false Deze optie is beschikbaar in Databricks Runtime 19 en hoger.
Clean source is standaard een best-effort operatie. Als de stream bestanden heeft verwerkt voordat de schone bron bestanden heeft verplaatst of verwijderd, wordt de schone bron-operatie beëindigd. Door het instellen cloudFiles.cleanSource.waitForCompletion moet de stream actief blijven totdat de schone bron klaar is met het verplaatsen of verwijderen van bestanden. Dit kan de looptijd van de stream verlengen als er veel bestanden verwijderd moeten worden.
Dit geldt alleen wanneer de stream vanzelf wordt voltooid (bijvoorbeeld een availableNow trigger die alle bestanden leegt). Door de stream handmatig te stoppen of te annuleren, wordt de clean source-operatie onmiddellijk beëindigd, zelfs als deze optie is ingesteld.
cloudFiles.cleanSource.moveDestination None Een cloudopslag- of Unity Catalog-volumepad Pad waarnaar verwerkte bestanden moeten worden gearchiveerd wanneer cloudFiles.cleanSource is ingesteld op MOVE. Dit kan een cloudopslagpad of een Unity Catalog-volumepad zijn (bijvoorbeeld /Volumes/my_catalog/my_schema/my_volume/archive/).
De locatie voor verplaatsen moet:
  • Wees geen onderliggend element van de bronmap. Als u de verplaatsingsbestemming in de bronmap plaatst, worden de gearchiveerde bestanden opnieuw opgenomen.
  • Zich op dezelfde externe locatie, volume of DBFS-koppeling bevinden als de bron. Verplaatsingen tussen verschillende buckets en containers worden niet ondersteund en resulteren in een fout.

Auto Loader moet schrijfmachtigingen hebben voor deze map.

Overwegingen voorafgaand aan het inschakelen cloudFiles.cleanSource

  • Azure Databricks raadt deze optie niet aan te gebruiken wanneer meerdere stromen data uit dezelfde bronmap verbruiken. De snelste stream ruimt de bestanden op, dus de langzamere streams nemen ze nooit op.
  • Voor het inschakelen van deze functie moet automatisch laden de extra status in het controlepunt behouden, wat prestatieoverhead oplevert, maar verbeterde waarneembaarheid mogelijk maakt via de cloud_files_state functie met tabelwaarde. Zie cloud_files_state tabelwaardefunctie.
  • Clean source gebruikt de huidige instelling om te beslissen of het een bepaald bestand moet zijn MOVEDELETE . Stel dat de instelling was MOVE toen het bestand oorspronkelijk werd verwerkt, maar werd gewijzigd in DELETE toen het bestand 30 dagen later een kandidaat werd voor het opschonen. In dit geval verwijdert een schone bron het bestand.
  • Bestanden worden niet gegarandeerd opgeschoond zodra het cloudFiles.cleanSource.retentionDuration verloopt. Om de kosten laag te houden, ruimt Auto Loader bestanden gelijktijdig op met streamverwerking en beëindigt zodra de streamverwerking is voltooid of beëindigd. Bestanden die geschikt waren voor opruiming, maar niet konden worden opgeschoond tijdens de streamverwerking, worden de volgende keer dat Auto Loader draait, opgepikt.

Notities over schone bron

  • Schone bron draait alleen als er een batch bestanden verwerkt moet worden. Het is geen achtergrondproces dat onafhankelijk van inname verloopt. Als er geen nieuwe bestanden zijn om in te voeren in de bronmap, start de schone bron niet voor de huidige streamrun. Als gevolg daarvan, als een stream stopt met het ontvangen van nieuwe bestanden, worden bestanden die hun retentieduur al hebben bereikt pas opgeschoond nadat een latere stream een nieuwe batch verwerkt.

    Deze batchvereiste geldt ongeacht cloudFiles.cleanSource.waitForCompletion. Die optie houdt de stream alleen lang genoeg in leven om een lopende schoonmaak binnen een run af te ronden. Het start geen schone bron als er geen batch is om te verwerken.

  • Als een bestand wordt ingevoerd tijdens de N-de streamrun, wordt de commit_time for the file ingesteld op de N+1 streamrun. commit_time moet worden ingesteld voordat de schone bron kan bepalen of een bestand geschikt is voor verplaatsing of verwijdering, dus het vroegst dat een bestand kandidaat kan worden voor opruiming de N+2 stream run is.

  • Setting commit_time is noodzakelijk, maar niet voldoende. Een bestand wordt pas schoongemaakt nadat de retentieduur is verstreken, gemeten aan de hand van zijn commit_time. Bijvoorbeeld, met de standaard cloudFiles.cleanSource.retentionDuration van 30 dagen komt een bestand dat vandaag is verwerkt pas in aanmerking voor opruiming na 30 dagen nadat het commit_time is ingesteld. Dit geldt ongeacht hoeveel stroomverloop er tussendoor plaatsvindt. Aan beide voorwaarden moet voldaan zijn voordat het bestand wordt verplaatst of verwijderd.