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?

Filer bearbetas exakt en gång om det inte cloudFiles.allowOverwrites är aktiverat. När en fil läggs till eller skrivs över kan Azure Databricks inte garantera vilken version av filen som ska bearbetas. Du bör också vara försiktig när du aktiverar cloudFiles.allowOverwrites i filmeddelandeläget, där automatisk inläsning kan identifiera nya filer via både filmeddelanden och kataloglistor. På grund av avvikelsen mellan händelsetiden för filmeddelanden och filändringstiden kan Auto Loader få två olika tidsstämplar och därför mata in samma fil två gånger, även om filen bara skrivs en gång.

I allmänhet rekommenderar Databricks att du använder Automatisk inläsning för att mata in endast oföränderliga filer och undvika att ange cloudFiles.allowOverwrites. Om detta inte uppfyller dina krav 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) Strukturerat direktuppspelningsjobb 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 Vad är meddelandeläge för automatisk inläsning av fil?

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

Du kan använda molnresurshanteraren 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 schema för automatisk inläsning?

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.

Automatisk inläsning härleder även partitionskolumner genom att undersöka källkatalogstrukturen och söka efter filsökvägar som innehåller /key=value/ strukturen. 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 härleder partitionskolumnerna som tomma. Använd cloudFiles.partitionColumns för att explicit 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 i farten. Därför behöver du inte bekymra dig om prestandaträffar. 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.

Vad påverkar prestanda vid inmatning 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.