Vanliga frågor om Auto Loader

Vanliga frågor om Auto Loader från Databricks.

Bearbetar autoinläsaren filen igen när filen läggs till eller skrivs över?

Med standardinställningen (cloudFiles.allowOverwrites = false) bearbetas filerna exakt en gång. När en fil läggs till eller skrivs över kan autoinläsaren inte garantera vilken filversion som ska bearbetas. Om du vill tillåta automatisk inläsning att bearbeta filen igen när den läggs till eller skrivs över kan du ange cloudFiles.allowOverwrites till true. I det här fallet garanteras Auto Loader att bearbeta den senaste versionen av filen. Auto Loader kan dock inte garantera vilken mellanliggande version som behandlas.

Var försiktig om du aktiverar cloudFiles.allowOverwrites i filmeddelandeläge. I läget för filavisering kan autoinläsaren identifiera nya filer via både filaviseringar och kataloglistor. Eftersom händelsetiden för filmeddelanden och filändringstiden kan skilja sig åt kan Auto Loader ta emot två olika tidsstämplar och mata in samma fil två gånger, även om filen inte har uppdaterats.

Med cloudFiles.allowOverwrites påslaget måste du hantera duplicerade poster själv. Den automatiska inläsaren kommer att bearbeta hela filen igen även när den läggs till eller delvis uppdateras. I allmänhet rekommenderar Azure Databricks att du använder Auto Loader för att endast mata in oföränderliga filer och använda standardinställningen cloudFiles.allowOverwrites = false. Om du har ytterligare frågor kontaktar du ditt Azure Databricks-kontoteam.

Om mina datafiler inte tas emot kontinuerligt, men med jämna mellanrum, till exempel en gång om dagen, bör jag fortfarande använda den här källan och finns det några fördelar?

I det här fallet kan du konfigurera ett Trigger.AvailableNow (tillgängligt i Databricks Runtime 10.4 LTS och senare) Structured Streaming-jobb och schema som ska köras efter den förväntade tiden för filinmatning. Automatisk inläsning fungerar bra med både ovanliga eller frekventa uppdateringar. Även om de eventuella uppdateringarna är mycket stora skalar Auto Loader bra efter indatastorleken. Auto Loader effektiva filidentifieringstekniker och schemautvecklingsfunktioner gör Auto Loader till den rekommenderade metoden för inkrementell datainmatning.

Vad händer om jag ändrar kontrollpunktens plats när jag startar om flödet?

En kontrollpunktsplats upprätthåller viktig identifierande information om en dataström. Om du ändrar kontrollpunktens plats innebär det effektivt att du har övergett den tidigare strömmen och startat en ny ström.

Behöver jag skapa händelsemeddelandetjänster i förväg?

Nej. Om du väljer filmeddelandeläge och anger de behörigheter som krävs kan autoinläsaren skapa filaviseringstjänster åt dig. Se Hantera filnotifikationsköer för varje Auto Loader-ström separat (klassisk).

Om filhändelser är aktiverade på den externa platsen i Unity Catalog kan filhändelsetjänsten skapa filhändelserna i molnleverantören och du behöver inte konfigurera automatisk inläsning för att skapa dem för varje dataström. Se Använda filmeddelandeläge med filhändelser

Hur gör jag för att rensa resurserna för händelsemeddelanden som skapats av Auto Loader?

Du kan använda cloud resource manager för att lista och ta bort resurser. Du kan också ta bort dessa resurser manuellt med hjälp av molnleverantörens användargränssnitt eller API:er.

Kan jag köra flera strömmande frågor från olika indatakataloger på samma bucket/container?

Ja, så länge de inte är föräldra- och underordnade kataloger; till exempel skulle prod-logs/ och prod-logs/usage/ inte fungera eftersom /usage är en underordnad katalog till /prod-logs.

Kan jag dela en SQS-kö mellan Auto Loader och andra program?

Databricks rekommenderar inte att du delar en SQS-kö mellan Auto Loader och andra program. Vidarebefordra i stället dina S3-händelseaviseringar till ett SNS-ämne och prenumerera sedan på en separat SQS-kö för varje program till det ämnet. Använd en filterprincip för SNS-prenumeration för att säkerställa att endast relevanta meddelanden vidarebefordras till varje kö. Ange den dedikerade kö till Auto Loader.

Kan jag använda den här funktionen när det finns befintliga filaviseringar i min bucket eller container?

Ja, så länge din indatakatalog inte står i konflikt med det befintliga meddelandeprefixet (till exempel de ovan nämnda parent-child katalogerna).

Hur härleder Auto Loader schema?

När dataramen först definieras visar Auto Loader din källkatalog och väljer den senaste (efter filändringstid) 50 GB data eller 1 000 filer och använder dem för att härleda dataschemat.

Auto Loader härleder också partitionskolumner genom att undersöka källkatalogstrukturen och söka efter filsökvägar som innehåller /key=value/ struktur. Om källkatalogen har en inkonsekvent struktur, till exempel:

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

Automatisk inläsning tolkar partitionskolumnerna som vara tomma. Använd cloudFiles.partitionColumns för att uttryckligen parsa kolumner från katalogstrukturen.

Hur fungerar automatisk inläsning när källmappen är tom?

Om källkatalogen är tom kräver Auto Loader att du anger ett schema eftersom det inte finns några data för att utföra slutsatsdragning.

När härleds schemat för Auto Loader? Utvecklas den automatiskt efter varje mikrobatch?

Schemat härleds när DataFrame först definieras i koden. Under varje mikrobatch utvärderas schemaändringar direkt. Därför behöver du inte bekymra dig om prestandaförsämringar. När strömmen startas om hämtar den det utvecklade schemat från schemaplatsen och börjar köras utan några omkostnader från slutsatsdragning.

Hur påverkas prestandan vid läsning av data när du använder schemainferens för automatisk inläsning?

Du bör förvänta dig att schemainferensen tar ett par minuter för mycket stora källkataloger under den inledande schemainferensen. Du bör inte observera betydande prestandaträffar annars under körningen av dataströmmen. Om du kör koden i en Azure Databricks-notebook-fil kan du se statusuppdateringar som anger när Auto Loader ska visa din katalog för sampling och slutsatsdragning av dataschemat.

På grund av en bugg har en felaktig fil ändrat mitt schema drastiskt. Vad ska jag göra för att återställa en schemaändring?

Kontakta Databricks-supporten om du vill ha hjälp.

Hur avgör autoinläsaren om en fil har matats in eller inte?

Automatisk Inläsning läser normalt bara in varje fil en gång baserat på dess filsökväg. Men om du anger allowOverwrites alternativet till trueanvänder Auto Loader även filens senast ändrade tidsstämpel för att avgöra om en fil är ny eller har uppdaterats och måste matas in igen. Se Bearbetar autoinläsaren filen igen när filen läggs till eller skrivs över?

Hur återställer jag från ett CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN fel?

Det här felet uppstår när fortsättningstoken som lagras i kontrollpunkten För automatisk inläsning för filhändelsetjänsten har blivit ogiltig.

Några vanliga orsaker:

  • cloudFiles.useManagedFileEvents stängdes av och sedan på igen.
  • Ändring av källans externa plats eller volym.
  • Ändring av den angivna kö.

Så här återställer du:

  1. Ange .option("cloudFiles.listOnStart", "true") och .option(“cloudFiles.validateOptions”, false) på din direktuppspelningsfråga.
  2. Starta om dataströmmen. Auto Loader utför en fullständig kataloglista vid uppstart och kringgår den ogiltiga fortsättningstoken.
  3. Efter en lyckad mikrobatch tar du bort båda alternativen och startar om strömmen.

Mer information om alternativet finns i cloudFiles.listOnStart Alternativ för filavisering.