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. 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, luistert de service naar bestandsevenementen en slaat de metagegevensgegevens 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.

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 continue triggers moeten worden gebruikt, raadt Databricks aan om de triggerintervallen te configureren naar 1 minute of hoger (ingesteld via pipelines.trigger.interval in Lakeflow Spark Declaratieve Pijplijnen). 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.

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.

Faqs

Vind antwoorden op veelgestelde vragen over Automatisch laden met bestandsevenementen.

Waarom is de modus bestandsevenementen beter dan de klassieke modus voor bestandsmeldingen?

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

Vergelijkingsdiagram voor de bestandsmodus voor automatisch laden

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.

Hoe controleer ik of bestandsevenementen correct zijn ingesteld?

Klik op de knop Verbinding testen op de pagina externe locatie. Als u bestandsevenementen correct instelt, ziet u een groen vinkje voor het item Leesbewerkingen voor bestandsevenementen . Als u zojuist de externe locatie hebt gemaakt en bestandsevenementen hebt ingeschakeld in Automatic de modus, wordt de test weergegeven Skipped terwijl Azure Databricks meldingen instelt voor de externe locatie. Wacht enkele minuten en klik vervolgens nogmaals op Verbinding testen . Als Azure Databricks niet over de vereiste machtigingen beschikt voor het instellen of lezen van bestandsevenementen, ziet u een foutmelding voor het item Bestand gebeurtenissen lezen .

Kan ik een volledige lijst met mappen voorkomen tijdens de eerste uitvoering?

Nee. Zelfs als includeExistingFiles is ingesteld op false, voert Auto Loader een directoryvermelding uit om bestanden te ontdekken die zijn gemaakt na de start van de stream en om bij te werken naar de huidige status van de cache voor bestandsevenementen (een geldige leespositie in de cache te beveiligen en deze op te slaan in het controlepunt van de stream).

Moet ik instellen cloudFiles.backfillInterval om ontbrekende bestanden te voorkomen?

Nee. Azure Databricks heeft deze instelling eerder aanbevolen voor de klassieke modus voor bestandsmeldingen, omdat cloudopslagmeldingensystemen kunnen leiden tot gemiste of late binnenkomende bestanden. Azure Databricks voert nu volledige adreslijstvermeldingen uit op de externe locatie. De eerste volledige lijst met mappen begint zodra bestandsevenementen zijn ingeschakeld op de externe locatie. 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.

Ik heb bestandsgebeurtenissen ingesteld met een opgegeven opslagwachtrij, maar de wachtrij is onjuist geconfigureerd en ik heb bestanden gemist. Hoe zorg ik ervoor dat automatisch laden de bestanden opneemt die zijn gemist wanneer mijn wachtrij onjuist is geconfigureerd?

Controleer eerst of de opgegeven onjuiste configuratie van de wachtrij is opgelost. Klik op de knop Verbinding testen op de pagina externe locatie om dit te controleren. Als u bestandsevenementen correct instelt, wordt er een groen vinkje weergegeven voor het item Bestand gebeurtenissen lezen .

Azure Databricks voert een volledige lijst met mappen uit voor externe locaties waarvoor bestandsevenementen zijn ingeschakeld. Deze mapvermelding detecteert alle bestanden die zijn gemist tijdens de onjuiste configuratieperiode en slaat deze op in de cache voor bestandsgebeurtenissen.

Nadat de onjuiste configuratie is opgelost en Azure Databricks de lijst met mappen heeft voltooid, blijft Auto Loader lezen uit de cache voor bestandsgebeurtenissen en worden alle bestanden die tijdens de onjuiste configuratieperiode zijn gemist, automatisch opgenomen.

Hoe krijgt Azure Databricks de machtigingen voor het maken van cloudresources en het lezen en verwijderen van berichten uit de wachtrij?

Azure Databricks gebruikt de machtigingen die zijn verleend in de opslagreferentie die is gekoppeld aan de externe locatie waarop bestandsevenementen zijn ingeschakeld.

Volgende stappen