Triggerintervallen voor gestructureerd streamen configureren
Apache Spark Structured Streaming verwerkt gegevens incrementeel; door het triggerinterval voor batchverwerking te beheren, kunt u Structured Streaming gebruiken voor workloads, waaronder bijna realtime verwerking, het vernieuwen van databases om de 5 minuten of eenmaal per uur, of batchverwerking van alle nieuwe gegevens voor een dag of week.
Omdat Databricks Auto Loader gebruikmaakt van Structured Streaming om gegevens te laden, biedt inzicht in hoe triggers werken u de grootste flexibiliteit om de kosten te beheren terwijl u gegevens opneemt met de gewenste frequentie.
Tijdgebonden triggerintervallen opgeven
Structured Streaming verwijst naar tijdgebaseerde triggerintervallen als 'microbatches met vaste interval'. Geef met behulp van het processingTime
trefwoord een tijdsduur op als een tekenreeks, zoals .trigger(processingTime='10 seconds')
.
Wanneer u een trigger
interval opgeeft dat te klein is (minder dan tien seconden), kan het systeem onnodige controles uitvoeren om te zien of er nieuwe gegevens binnenkomen. Configureer de verwerkingstijd om de latentievereisten te verdelen en de snelheid waarmee gegevens in de bron binnenkomen.
Incrementele batchverwerking configureren
Belangrijk
In Databricks Runtime 11.3 LTS en hoger is de Trigger.Once
instelling afgeschaft. Databricks raadt u Trigger.AvailableNow
aan voor alle incrementele batchverwerkingsworkloads.
De beschikbare triggeroptie gebruikt alle beschikbare records als een incrementele batch met de mogelijkheid om batchgrootte te configureren met opties zoals maxBytesPerTrigger
(grootteopties variƫren per gegevensbron).
Azure Databricks biedt ondersteuning voor het gebruik van Trigger.AvailableNow
voor incrementele batchverwerking van veel Structured Streaming-bronnen. De volgende tabel bevat de minimaal ondersteunde Databricks Runtime-versie die is vereist voor elke gegevensbron:
Bron | Minimale Databricks Runtime-versie |
---|---|
Bestandsbronnen (JSON, Parquet, enzovoort) | 9.1 LTS |
Delta Lake | 10.4 LTS |
Automatisch laden | 10.4 LTS |
Apache Kafka | 10.4 LTS |
Kinesis | 13.1 |
Wat is het standaardtriggerinterval?
Structured Streaming is standaard ingesteld op microbatches met vaste intervalgrootten van 500 ms. Databricks raadt aan altijd een op maat gemaakte trigger
op te geven om de kosten te minimaliseren die samenhangen met het controleren of er nieuwe gegevens zijn aangekomen en het verwerken van te kleine batches.
Triggerintervallen tussen runs wijzigen
U kunt het triggerinterval tussen uitvoeringen wijzigen terwijl u hetzelfde controlepunt gebruikt.
Als een structured streaming-taak stopt terwijl een microbatch wordt verwerkt, moet die microbatch worden voltooid voordat het nieuwe triggerinterval van toepassing is. Als zodanig kunt u een microbatchverwerking met de eerder opgegeven instellingen observeren nadat u het triggerinterval hebt gewijzigd.
Wanneer u overstapt van een op tijd gebaseerde interval naar het gebruik van AvailableNow
, kan dit resulteren in het eerder verwerken van microbatches voordat alle beschikbare records als een incrementele batch worden verwerkt.
Wanneer u overstapt van AvailableNow
naar een op tijd gebaseerd interval, kan dit ertoe leiden dat u doorgaat met het verwerken van alle records die beschikbaar waren toen de laatste AvailableNow
taak werd geactiveerd. Dit is normaal gedrag.
Notitie
Als u probeert te herstellen van een queryfout die is gekoppeld aan een incrementele batch, lost het wijzigen van het triggerinterval dit probleem niet op omdat de batch nog steeds moet worden voltooid. Databricks raadt aan de rekencapaciteit op te schalen die wordt gebruikt om de batch te verwerken om het probleem op te lossen. In zeldzame gevallen moet u de stream mogelijk opnieuw opstarten met een nieuw controlepunt.
Wat is de modus voor continue verwerking?
Apache Spark ondersteunt een extra triggerinterval dat continue verwerking wordt genoemd. Deze modus is geclassificeerd als experimenteel sinds Spark 2.3; neem contact op met uw Azure Databricks-accountteam om er zeker van te zijn dat u de afwegingen van dit verwerkingsmodel begrijpt.
Houd er rekening mee dat deze modus voor continue verwerking helemaal niet gerelateerd is aan continue verwerking zoals toegepast in DLT.