Overzicht van Auto Loader met bestandsevenementen

De cloudFiles.useManagedFileEvents optie met Auto Loader maakt efficiënte bestandsdetectie mogelijk.

Hoe werkt Auto Loader met bestandgebeurtenissen?

Automatisch laden met bestandsevenementen maakt gebruik van functionaliteit voor bestandsevenementen die wordt geleverd door cloudleveranciers. U kunt cloudopslagcontainers configureren voor het publiceren van meldingen bij bestandsevenementen, zoals het maken en wijzigen van nieuwe bestanden. Met amazon S3-gebeurtenismeldingen kan een nieuwe bestandsaankomst bijvoorbeeld een melding activeren voor een Amazon SNS-onderwerp (zie de inhoudsstructuur voor Amazon S3-meldingen voor meer informatie). U kunt vervolgens voor de asynchrone verwerking van de gebeurtenis een Amazon SQS-wachtrij aanmelden bij het SNS-topic.

Meldingssystemen voor cloudopslag-gebeurtenissen

Bestandsevenementen van Azure Databricks is een service waarmee cloudbronnen worden ingesteld om te luisteren naar bestandsevenementen. U kunt ook zelf de cloudresources instellen en uw eigen opslagwachtrij opgeven.

Nadat u de cloudresources hebt geconfigureerd, verwerkt de service meldingen van bestandsevenementen en slaat de metagegevens van bestanden in de cache op. Auto Loader gebruikt deze cache om bestanden te detecteren wanneer deze wordt uitgevoerd met cloudFiles.useManagedFileEvents ingesteld op true.

Automatisch laden met bestandsevenementen

Wanneer een stream voor het eerst wordt uitgevoerd met cloudFiles.useManagedFileEvents de optie ingesteld op true, maakt Auto Loader een volledig overzicht van de laaddirectory om alle bestanden te detecteren en te synchroniseren met de cache voor bestandsevenementen (bescherm een geldige leespositie in de cache en sla deze op in het controlepunt van de stream). Volgende uitvoeringen van Auto Loader detecteren nieuwe bestanden door rechtstreeks vanuit de cache voor bestandsevenementen te lezen met behulp van de opgeslagen leespositie en hoeven geen mapvermeldingen te bevatten.

Databricks raadt u aan om uw AutoLoader-streams minstens één keer per zeven dagen uit te voeren om te profiteren van incrementele bestandsdetectie vanuit de cache. Als u Auto Loader niet al zo vaak uitvoert, wordt de opgeslagen leespositie ongeldig en moet Auto Loader een volledige mappenlijst uitvoeren om te synchroniseren met de bestandsevenementen-cache.

Modus voor bestandsevenementen versus klassieke modus voor bestandsmeldingen

In dit diagram worden de modus bestandsevenementen en de klassieke modus voor bestandsmeldingen vergeleken.

Diagram naast elkaar vergelijken van de modus bestandsgebeurtenissen (links) en de klassieke modus voor bestandsmeldingen (rechts).

In de modus bestandsgebeurtenissen maakt één service voor beheerde bestandsgebeurtenissen verbinding met de cloudopslag van de klant. Er wordt één gedeeld SNS-onderwerp, SQS-wachtrij en SNS-naar-SQS-abonnement gemaakt dat meerdere consumenten bedient, waaronder AutoLoader en Triggers. In de klassieke modus voor bestandsmeldingen vereist elke consument een eigen gebeurtenisabonnement en -wachtrij, wat resulteert in meerdere afzonderlijke meldingspijplijnen per bucket.

De modus Bestandsgebeurtenissen heeft verschillende voordelen vergeleken met de klassieke modus voor bestandsmeldingen. In de eerste plaats is er slechts één wachtrij vereist voor alle automatische laadprogramma's in een bucket, zodat u de limiet voor meldingen per bucket kunt voorkomen. Zie de modus voor bestandsmeldingen met en zonder bestandsgebeurtenissen ingeschakeld op externe locaties voor meer informatie.

Wanneer gebruikt Auto Loader met bestandsevenementen mapvermelding?

Auto Loader voert een volledige lijst met mappen uit wanneer:

  • Een nieuwe stream starten.
  • Een stream migreren vanuit mapvermelding of klassieke bestandsmeldingen.
  • Auto Loader met bestandsevenementen wordt langer dan zeven dagen niet uitgevoerd.
  • U voert updates uit voor de externe locatie die de leespositie van de Auto Loader ongeldig maken. Voorbeelden hiervan zijn wanneer u bestandsevenementen uitschakelt en weer inschakelt, wanneer u het pad van de externe locatie wijzigt of wanneer u een andere wachtrij voor de externe locatie opgeeft.

Auto Loader voert altijd een volledige lijstweergave uit bij de eerste uitvoering, zelfs wanneer includeExistingFiles het is ingesteld op false. Met deze vlag kunt u alle bestanden opnemen die zijn gemaakt na de begintijd van de stream. Auto Loader geeft de gehele map weer om alle bestanden te ontdekken die zijn aangemaakt na de begintijd van de stream, stelt een leespositie vast in de cache voor bestandgebeurtenissen en slaat deze op in het controlepunt. Volgende uitvoeringen worden rechtstreeks gelezen uit de cache van bestandsevenementen en vereisen geen maplijst.

De Azure Databricks-bestandsgebeurtenissenservice voert ook volledige mapvermeldingen uit op de externe locatie om te controleren of er geen bestanden zijn gemist (bijvoorbeeld als de opgegeven wachtrij onjuist is geconfigureerd). De eerste volledige directorylijst wordt gegenereerd zodra bestandsevenementen op de externe locatie zijn ingeschakeld. Elke volgende vermelding vindt 24 uur plaats na de laatste volledige scan zolang er ten minste één automatische laadstroom is met behulp van bestandsgebeurtenissen om gegevens op te nemen.

Aanbevolen procedures voor automatisch laden met bestandsevenementen

Volg deze aanbevolen procedures om de prestaties en betrouwbaarheid te optimaliseren bij het gebruik van automatisch laden met bestandsevenementen.

Volumes gebruiken voor optimale bestandsdetectie

Voor verbeterde prestaties raadt Databricks aan om een extern volume te maken voor elk pad of elke submap waarvan Auto Loader gegevens laadt, en volumepaden (bijvoorbeeld /Volumes/someCatalog/someSchema/someVolume) aan te leveren aan Auto Loader in plaats van cloudpaden (bijvoorbeeld s3://bucket/path/to/volume). Hierdoor wordt bestandsdetectie geoptimaliseerd omdat Auto Loader het volume kan weergeven met behulp van een geoptimaliseerd gegevens-toegangspatroon.

Overweeg triggers voor bestandsaankomst voor gebeurtenisgestuurde pijplijnen

Voor gebeurtenisgestuurde gegevensverwerking kunt u overwegen een trigger voor bestandsaankomst te gebruiken in plaats van een continue pijplijn. Bestandsaankomsttriggers starten uw pijplijn automatisch wanneer er nieuwe bestanden binnenkomen, wat leidt tot een beter gebruik van resources en kostenefficiëntie, omdat uw cluster alleen wordt uitgevoerd wanneer er nieuwe bestanden moeten worden verwerkt.

Configureer passende intervallen met doorlopende triggers.

Databricks raadt aan om bestandskomsttriggers te gebruiken om bestanden te verwerken zodra ze binnenkomen. Als voor uw use-case echter een lagere latentie is vereist met behulp van continue triggers zoals Trigger.ProcessingTime, raadt Databricks aan om de triggerintervallen te configureren naar 1 minute of hoger. Stel in Lakeflow-pijplijnen deze waarde in met behulp van pipelines.trigger.interval. Hierdoor wordt de pollingfrequentie verlaagd om te controleren of er nieuwe bestanden zijn aangekomen en kan een hoger aantal streams gelijktijdig worden uitgevoerd vanuit uw werkruimte.

Voor zeer lage latentievereisten kunt u in plaats daarvan de klassieke modus voor bestandsmeldingen overwegen. Bestandsgebeurtenissen voegen een extra cachestap toe tussen cloudopslag en Auto Loader, wat vergeleken met rechtstreeks lezen uit de cloudwachtrij extra latentie kan veroorzaken.

Beperkingen van automatisch laden met bestandsevenementen

Auto Loader biedt geen ondersteuning voor het herschrijven van paden. Het herschrijven van paden is van toepassing wanneer meerdere buckets of containers worden gekoppeld onder DBFS. Dit is een afgeschaft gebruikspatroon.

Zie Beperkingen voor bestandsevenementen voor een algemene lijst met beperkingen voor bestandsevenementen.

Aanvullende informatiebronnen