Konfigurera utlösarintervall för strukturerad direktuppspelning
Apache Spark Structured Streaming bearbetar data stegvis; Om du styr utlösarintervallet för batchbearbetning kan du använda Strukturerad direktuppspelning för arbetsbelastningar, inklusive bearbetning i nära realtid, uppdatering av databaser var 5:e minut eller en gång i timmen eller batchbearbetning av alla nya data under en dag eller vecka.
Eftersom Databricks Auto Loader använder Structured Streaming för att läsa in data ger förståelse för hur utlösare fungerar den största flexibiliteten att kontrollera kostnaderna vid inmatning av data med önskad frekvens.
Ange tidsbaserade utlösarintervall
Strukturerad direktuppspelning refererar till tidsbaserade utlösarintervall som "mikrobatch med fast intervall". Med hjälp av nyckelordet processingTime
anger du en varaktighet som en sträng, till exempel .trigger(processingTime='10 seconds')
.
När du anger ett trigger
intervall som är för litet (mindre än tiotals sekunder) kan systemet utföra onödiga kontroller för att se om nya data kommer. Konfigurera bearbetningstiden för att balansera svarstidskrav och den hastighet som data anländer till källan.
Konfigurera inkrementell batchbearbetning
Viktigt!
I Databricks Runtime 11.3 LTS och senare Trigger.Once
är inställningen inaktuell. Databricks rekommenderar att du använder Trigger.AvailableNow
för alla inkrementella batchbearbetningsarbetsbelastningar.
Det tillgängliga utlösaralternativet använder alla tillgängliga poster som en inkrementell batch med möjlighet att konfigurera batchstorlek med alternativ som maxBytesPerTrigger
(storleksalternativen varierar beroende på datakälla).
Azure Databricks stöder användning Trigger.AvailableNow
för inkrementell batchbearbetning från många strukturerade strömningskällor. Följande tabell innehåller den lägsta databricks Runtime-version som stöds som krävs för varje datakälla:
Källa | Minsta Databricks Runtime-version |
---|---|
Filkällor (JSON, Parquet osv.) | 9.1 LTS |
Data Lake | 10.4 LTS |
Auto Loader | 10.4 LTS |
Apache Kafka | 10.4 LTS |
Kinesis | 13,1 |
Vad är standardutlösarintervallet?
Strukturerad direktuppspelning är som standard mikrobatch med fast intervall på 500 ms. Databricks rekommenderar att du alltid anger en anpassad trigger
för att minimera kostnaderna för att kontrollera om nya data har anlänt och bearbeta undersized batchar.
Ändra utlösarintervall mellan körningar
Du kan ändra utlösarintervallet mellan körningar när du använder samma kontrollpunkt.
Om ett structured Streaming-jobb stoppas medan en mikrobatch bearbetas måste mikrobatchen slutföras innan det nya utlösarintervallet tillämpas. Därför kan du observera en mikrobatchbearbetning med de tidigare angivna inställningarna när du har ändrat utlösarintervallet.
När du går från tidsbaserat intervall till att använda AvailableNow
kan detta resultera i en mikrobatchbearbetning innan alla tillgängliga poster bearbetas som en inkrementell batch.
När du flyttar från AvailableNow
till ett tidsbaserat intervall kan det leda till att du fortsätter att bearbeta alla poster som var tillgängliga när det senaste AvailableNow
jobbet utlöstes. Detta är det förväntade beteendet.
Kommentar
Om du försöker återställa från ett frågefel som är associerat med en inkrementell batch löser det inte problemet genom att ändra utlösarintervallet eftersom batchen fortfarande måste slutföras. Databricks rekommenderar att du skalar upp den beräkningskapacitet som används för att bearbeta batchen för att försöka lösa problemet. I sällsynta fall kan du behöva starta om strömmen med en ny kontrollpunkt.
Vad är läget för kontinuerlig bearbetning?
Apache Spark stöder ytterligare ett utlösarintervall som kallas kontinuerlig bearbetning. Det här läget har klassificerats som experimentellt sedan Spark 2.3. Kontakta ditt Azure Databricks-kontoteam för att se till att du förstår kompromisserna med den här bearbetningsmodellen.
Observera att det här läget för kontinuerlig bearbetning inte alls relaterar till kontinuerlig bearbetning som tillämpas i Delta Live Tables.