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, where Automatisk inläsare kan identifiera nya filer via både filaviseringar 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 set upp ett Trigger.AvailableNow
(tillgängligt i Databricks Runtime 10.4 LTS och senare) strukturerat streamingjobb och schemalägga det att köras efter den förväntade tidpunkten för filens ankomst. 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 Loaders effektiva filupptäckstekniker och schema utvecklingsfunktioner gör Auto Loader till den rekommenderade metoden för inkrementell dataintag.
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 molnresurshanterare för att list och avveckla 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 autoinläsaren schema?
När DataFrame först definieras, listar Auto Loader din källkatalog och väljer de senaste 50 GB av data eller 1 000 filer baserat på filändringstid, och använder dessa för att dra slutsatser om dina data schema.
Autoinläsaren härleder också partitioncolumns 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
Auto Loader härleder partitioncolumns som tom. Använd cloudFiles.partitionColumns
för att uttryckligen parsa columns 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 en 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?
schema bestäms när DataFrame först definieras i koden. Under varje mikrobatch utvärderas schema ändringar i realtid. Därför behöver du inte bekymra dig om prestandaproblem. När strömmen återupptas hämtar den den utvecklade schema från platsen schema och börjar exekvera utan något behov av ytterligare slutsatsdragning.
Vad är prestandapåverkan vid inmatning av data när du använder Auto Loader schema inference?
Du bör förvänta dig att schema slutsatsdragning tar ett par minuter för mycket stora källkataloger under inledande schema slutsatsdragning. 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 katalogen för sampling och slutsatsdragning av dina data schema.
På grund av en bugg har en felaktig fil ändrat min schema drastiskt. Vad ska jag göra för att återställa en schema ändring?
Kontakta Databricks-supporten om du vill ha hjälp.