Delen via


Triggerintervallen voor gestructureerd streamen configureren

In dit artikel wordt uitgelegd hoe u triggerintervallen configureert voor Gestructureerd streamen in Azure Databricks.

Met Apache Spark Structured Streaming worden gegevens incrementeel verwerkt. Triggerintervallen bepalen hoe vaak structured streaming controleert op nieuwe gegevens. U kunt triggerintervallen configureren voor bijna realtime verwerking, voor geplande databasevernieuwingen of batchverwerking van alle nieuwe gegevens voor een dag of een week.

Omdat What is Auto Loader? gebruikt Structured Streaming om gegevens te laden, inzicht in hoe triggers werken, biedt u de grootste flexibiliteit om de kosten te beheren tijdens het opnemen van gegevens met de gewenste frequentie.

Overzicht van triggermodi

De volgende tabel bevat een overzicht van de triggermodi die beschikbaar zijn in Structured Streaming:

Triggermodus Syntaxisvoorbeeld (Python) Geschikt voor
Niet opgegeven (standaard) N/A Algemeen streamen met 3-5 seconden latentie. Gelijk aan de processingTime-trigger met intervallen van 0 ms. Stroomverwerking wordt continu uitgevoerd zolang er nieuwe gegevens binnenkomen.
Verwerkingstijd .trigger(processingTime='10 seconds') Balans tussen kosten en prestaties. Vermindert overhead door te voorkomen dat het systeem te vaak op gegevens controleert.
Nu beschikbaar .trigger(availableNow=True) Geplande incrementele batchverwerking. Verwerkt zoveel gegevens als beschikbaar is op het moment dat de streamingtaak wordt geactiveerd.
Real-time modus .trigger(realTime='5 minutes') Operationele workloads met ultra lage latentie die sub-secondeverwerking vereisen, zoals fraudedetectie of realtime persoonlijke instellingen. Publieke preview. '5 minuten' geeft de lengte van een microbatch aan. Gebruik vijf minuten om de overhead per batch te minimaliseren, zoals het compileren van query's.
Doorlopend .trigger(continuous='1 second') Wordt niet ondersteund. Dit is een experimentele functie die is opgenomen in Spark OSS. Gebruik in plaats daarvan de realtimemodus.

processingTime: tijdgebaseerde triggerintervallen

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').

De configuratie van dit interval bepaalt hoe vaak het systeem controles uitvoert om te zien of er nieuwe gegevens zijn aangekomen. Configureer de verwerkingstijd om de latentievereisten te verdelen en de snelheid waarmee gegevens in de bron binnenkomen.

AvailableNow: Incrementele batchverwerking

Belangrijk

In Databricks Runtime 11.3 LTS en hoger is Trigger.Once afgeschaft. Gebruiken Trigger.AvailableNow voor alle incrementele batchverwerkingsworkloads.

De AvailableNow triggeroptie verbruikt alle beschikbare records als een incrementele batch met de mogelijkheid om batchgrootte te configureren met opties zoals maxBytesPerTrigger. De grootteopties variƫren per gegevensbron.

Ondersteunde gegevensbronnen

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 Lange Termijn Ondersteuning (LTS)
Delta Lake 10.4 LTS
Automatisch laden 10.4 LTS
Apache Kafka 10.4 LTS
Beweging 13.1

realTime: operationele workloads met ultra lage latentie

Belangrijk

Deze functie bevindt zich in openbare preview-versie.

De realtimemodus voor Structured Streaming bereikt end-to-end latentie onder de 1 seconde aan de staart en in veelvoorkomende gevallen ongeveer 300 ms. Zie de realtime-modus in Structured Streaming voor meer informatie over het effectief configureren en gebruiken van realtimemodus.

Apache Spark heeft een extra triggerinterval dat continue verwerking wordt genoemd. Deze modus is geclassificeerd als experimenteel sinds Spark 2.3. Azure Databricks biedt geen ondersteuning voor deze modus of raadt deze modus aan. Gebruik in plaats daarvan de realtimemodus voor use cases met lage latentie.

Notitie

De modus voor continue verwerking op deze pagina is niet gerelateerd aan continue verwerking in declaratieve Pijplijnen van Lakeflow Spark.

Triggerintervallen tussen uitvoeringen wijzigen

U kunt het triggerinterval tussen uitvoeringen wijzigen terwijl u hetzelfde controlepunt gebruikt.

Gedrag bij het wijzigen van intervallen

Als een structured streaming-taak stopt terwijl een microbatch wordt verwerkt, moet die microbatch worden voltooid voordat het nieuwe triggerinterval van toepassing is. Als gevolg hiervan kunt u een microbatchverwerking met de eerder opgegeven instellingen observeren nadat u het triggerinterval hebt gewijzigd. Hier volgt een beschrijving van het verwachte gedrag bij de overgang:

  • Overstappen van tijdsinterval naar AvailableNow: Een micro-batch kan al verwerkt worden voordat alle beschikbare records als een incrementele batch verwerkt zijn.

  • Overstappen van interval op basis van AvailableNow tijd: Verwerking kan worden voortgezet voor alle records die beschikbaar waren toen de laatste AvailableNow taak werd geactiveerd. Dit is te verwachten gedrag.

Herstellen van queryfouten

Notitie

Als u probeert te herstellen van een queryfout die is gekoppeld aan een incrementele batch, lost u dit probleem niet op door het triggerinterval te wijzigen, omdat de batch nog steeds moet worden voltooid. Schaal de rekencapaciteit op 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.