Dela via


Vanliga frågor och svar om automatisk inläsning

Vanliga frågor och svar om Automatisk inläsning av 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 kontrollpunktsplatsen när jag startar om strömmen?

En kontrollpunktsplats upprätthåller viktig identifierande information om en dataström. Om du ändrar kontrollpunktsplatsen innebär det att du har övergett den tidigare strömmen och startat en ny dataströ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 filmeddelandeköer för varje automatisk inläsningsström separat (äldre).

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 överordnad-underordnade kataloger; och skulle till exempel prod-logs/prod-logs/usage/ inte fungera eftersom /usage är en underordnad katalog med /prod-logs.

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

Ja, så länge indatakatalogen inte står i konflikt med det befintliga meddelandeprefixet (till exempel ovanstående överordnade och underordnade kataloger).

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ärleder Autoloader schema? 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.