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:

Source 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 AvailableNowkan 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.