Översikt över Auto Loader med filhändelser

Alternativet cloudFiles.useManagedFileEvents med Auto Loader möjliggör effektiv filupptäckt.

Hur fungerar Auto Loader med filhändelser?

Automatisk laddare med filhändelser använder funktioner för filhändelsemeddelanden som tillhandahålls av molntjänstleverantörer. Du kan konfigurera molnlagringscontainrar för att publicera meddelanden om filhändelser, till exempel skapande och ändring av nya filer. Till exempel kan Amazon S3-händelseaviseringar utlösas när en ny fil anländer, vilket skickar en avisering till ett ämne i Amazon SNS (se innehållsstrukturen för Amazon S3-aviseringar för mer information). Du kan sedan prenumerera på en Amazon SQS-kö till SNS-ämnet för asynkron bearbetning av händelsen.

Meddelandesystem för molnlagringshändelser

Azure Databricks-filhändelser är en tjänst som konfigurerar molnresurser för att lyssna efter filhändelser. Du kan också konfigurera molnresurserna själv och tillhandahålla en egen lagringskö.

När du har konfigurerat molnresurserna bearbetar tjänsten filhändelsemeddelanden och cachelagrar filmetadata. Auto Loader använder den här cachen för att identifiera filer när den körs med cloudFiles.useManagedFileEvents inställt på true.

Automatinläsare med filhändelser

När en dataström körs för första gången med cloudFiles.useManagedFileEvents inställd på true, utför Auto Loader en fullständig katalog över inläsningssökvägen för att identifiera alla filer och synkronisera med filhändelsernas cache (säkerställa en giltig läsposition i cacheminnet och lagra den i dataströmmens kontrollpunkt). Efterföljande körningar av Auto Loader identifierar nya filer genom att läsa direkt från cachen för filhändelser med hjälp av den lagrade läspositionen och kräver inte kataloglista.

Databricks rekommenderar att du kör dina automatiska inläsningsströmmar minst en gång var sjunde dag för att dra nytta av inkrementell filidentifiering från cachen. Om du inte kör automatisk inläsning minst så här ofta blir den lagrade läspositionen ogiltig och Auto Loader måste utföra en fullständig kataloglista för att synkronisera med filhändelsernas cacheminne.

Läge för filhändelser jämfört med klassiskt läge för filavisering

I det här diagrammet jämförs filhändelsernas läge och det klassiska filmeddelandeläget.

Diagram sida vid sida som jämför läget för filhändelser (vänster) och det klassiska filaviseringsläget (höger).

I läget för filhändelser ansluter en enda tjänst för hanterade filhändelser till kundens molnlagring. Det skapar ett gemensamt SNS-ämne, en SQS-kö och en SNS-till-SQS-prenumeration som används av flera konsumenter, inklusive Auto Loader och Triggers. I det klassiska filmeddelandeläget kräver varje konsument en egen händelseprenumeration och kö, vilket resulterar i flera separata meddelandepipelines per bucket.

Läget för filhändelser har flera fördelar jämfört med det klassiska filmeddelandeläget. Man behöver i huvudsak bara en kö för alla Auto Loader-strömmar i en bucket, vilket hjälper dig att undvika gränsen för meddelanden per bucket. Mer information finns i Filmeddelandeläge med och utan filhändelser aktiverade på externa platser.

När använder Auto Loader med filhändelser kataloglistning?

Den automatiska laddaren utför en fullständig kataloglista när:

  • Starta en ny strömning.
  • Migrera en dataström från kataloglistor eller klassiska filaviseringar.
  • Automatisk inläsning med filhändelser körs inte på mer än sju dagar.
  • Du gör uppdateringar av den externa platsen som ogiltigförklarar Auto Loaders läsposition. Exempel är när du inaktiverar och aktiverar filhändelser igen, när du ändrar sökvägen till den externa platsen eller när du anger en annan kö för den externa platsen.

Auto Loader utför alltid en fullständig genomgång vid första körningen, även när includeExistingFiles är inställd på false. Med den här flaggan kan du mata in alla filer som skapades efter strömmens starttid. Automatisk inläsare visar en lista över hela katalogen för att identifiera alla filer som skapats efter strömmens starttid, upprättar en läsposition i cacheminnet för filhändelser och lagrar den i kontrollpunkten. Efterföljande körningar läse direkt från filhändelsernas cacheminne och kräver ingen kataloglista.

Azure Databricks-filhändelsetjänsten utför också fullständiga kataloglistor på den externa platsen för att kontrollera att den inte har missat några filer (till exempel om den angivna kön är felkonfigurerad). Den första fullständiga kataloglistan börjar så snart filhändelser aktiveras på den externa platsen. Varje efterföljande lista sker 24 timmar efter den senaste fullständiga genomsökningen så länge det finns minst en Auto Loader-ström som använder filhändelser för att importera data.

Bästa praxis för Auto Loader med filhändelser

Följ dessa metodtips för att optimera prestanda och tillförlitlighet när du använder Auto Loader med filhändelser.

Använda volymer för optimal filidentifiering

För bättre prestanda rekommenderar Databricks att du skapar en extern volym för varje sökväg eller underkatalog som Auto Loader läser in data från och tillhandahåller volymsökvägar (till exempel /Volumes/someCatalog/someSchema/someVolume) till Automatisk inläsning i stället för molnsökvägar (till exempel s3://bucket/path/to/volume). Detta optimerar filidentifieringen eftersom Auto Loader kan visa en lista över volymen med hjälp av ett optimerat dataåtkomstmönster.

Överväg utlösare för filinkomst för händelsedrivna pipelines

För händelsedriven databearbetning bör du överväga att använda en utlösare för filinmatning i stället för en kontinuerlig pipeline. Utlösare för filinkomst startar automatiskt pipelinen när nya filer tas emot, vilket ger bättre resursanvändning och kostnadseffektivitet eftersom klustret bara körs när det finns nya filer att bearbeta.

Konfigurera lämpliga intervall med kontinuerliga utlösare

Databricks rekommenderar att du använder utlösare för filinmatning för att bearbeta filer så snart de anländer. Men om ditt användningsfall kräver kortare svarstid med kontinuerliga utlösare som Trigger.ProcessingTimerekommenderar Databricks att du konfigurerar utlösarintervallen till 1 minute eller högre. I Lakeflow-pipelines anger du det här värdet med .pipelines.trigger.interval Detta sänker avsökningsfrekvensen för att kontrollera om nya filer har anlänt och tillåter ett högre antal strömmar att köras samtidigt från din arbetsyta.

För krav på mycket kort svarstid bör du överväga det klassiska filmeddelandeläget i stället. Filhändelser introducerar ytterligare ett cachelager mellan molnlagringen och Auto Loader, vilket kan ge högre latens jämfört med att läsa direkt från molnkön.

Begränsningar med Auto Loader för filhändelser

Automatisk inläsning stöder inte sökvägsomskrivningar. Sökvägsomskrivningar gäller när flera bucketar eller containrar monteras under DBFS, vilket är ett inaktuellt användningsmönster.

En allmän lista över begränsningar för filhändelser finns i Begränsningar för filhändelser.

Ytterligare resurser