Freigeben über


Konfigurieren strukturierter Streaming-Triggerintervalle

Apache Spark Structured Streaming verarbeitet Daten inkrementell; durch das Steuern der Triggerintervalls für die Batchverarbeitung können Sie strukturiertes Streaming für Workloads verwenden, einschließlich der Echtzeitverarbeitung, das Aktualisieren von Datenbanken alle 5 Minuten oder einmal pro Stunde, oder die Batchverarbeitung aller neuen Daten für einen Tag oder eine Woche.

Da Databricks Auto Loader strukturiertes Streaming zum Laden von Daten verwendet, bietet Ihnen das Verständnis der Funktionsweise von Triggern die größte Flexibilität, um Kosten zu kontrollieren, während Daten mit der gewünschten Häufigkeit erfasst werden.

Angeben von zeitbasierten Triggerintervallen

Strukturiertes Streaming bezieht sich auf zeitbasierte Triggerintervalle als „Micro-Batches mit festem Intervall“. Geben Sie mithilfe des processingTime-Schlüsselworts eine Zeitdauer als Zeichenfolge an, z. B. .trigger(processingTime='10 seconds').

Wenn Sie ein zu kleines trigger-Intervall angeben (weniger als Zehntelsekunden), führt das System möglicherweise unnötige Überprüfungen durch, um festzustellen, ob neue Daten eintreffen. Konfigurieren Sie Ihre Verarbeitungszeit, um die Latenzanforderungen und die Geschwindigkeit, mit der Daten in der Datenquelle eintreffen, auszugleichen.

Konfigurieren der inkrementellen Batchverarbeitung

Wichtig

In Databricks Runtime 11.3 LTS und höher ist die Einstellung Trigger.Once veraltet. Databricks empfiehlt die Verwendung von Trigger.AvailableNow für alle Workloads der inkrementellen Batchverarbeitung.

Die jetzt verfügbare Triggeroption nutzt alle verfügbaren Datensätze als inkrementellen Batch mit der Möglichkeit, die Batchgröße mit Optionen wie maxBytesPerTrigger (Größenanpassungsoptionen variieren je nach Datenquelle) zu konfigurieren.

Azure Databricks unterstützt die Verwendung von Trigger.AvailableNow für die inkrementelle Batchverarbeitung aus vielen strukturierten Streamingquellen. Die folgende Tabelle enthält die mindestens unterstützte Databricks Runtime-Version, die für jede Datenquelle erforderlich ist:

`Source` Mindestversion von Databricks Runtime
Dateiquellen (JSON, Parquet usw.) 9.1 LTS
Delta Lake 10.4 LTS
Autoloader 10.4 LTS
Apache Kafka 10.4 LTS
Kinesis Version 13.1

Was ist das standardmäßige Triggerintervall?

Strukturiertes Streaming ist standardmäßig für feste Intervall-Micro-Batches von 500Ms festgelegt. Databricks empfiehlt Ihnen immer eine angepasste trigger, um Kosten zu minimieren, die mit der Überprüfung, ob neue Daten eingetroffen sind, und der Verarbeitung von zu kleinen Batches verbunden sind.

Ändern von Auslöseintervallen zwischen Ausführungen

Sie können das Auslöseintervall zwischen den Ausführungen ändern, während Sie denselben Prüfpunkt verwenden.

Wenn ein strukturierter Streamingauftrag beendet wird, während ein Mikrobatch verarbeitet wird, muss dieser Mikrobatch abgeschlossen werden, bevor das neue Auslöseintervall angewendet wird. Daher kann es vorkommen, dass nach einer Änderung des Auslöseintervalls ein Mikrobatch mit den zuvor festgelegten Einstellungen verarbeitet wird.

Wenn Sie von zeitbasiertem Intervall zur Verwendung von AvailableNow wechseln, kann dies zu einer Mikrobatchverarbeitung führen, bevor alle verfügbaren Datensätze als inkrementeller Batch verarbeitet werden.

Wenn Sie von AvailableNow zu einem zeitbasierten Intervall wechseln, kann dies dazu führen, dass alle Datensätze verarbeitet werden, die verfügbar waren, als der letzte AvailableNow-Auftrag ausgelöst wurde. Dies ist das erwartete Verhalten.

Hinweis

Wenn Sie versuchen, eine fehlgeschlagene Abfrage im Zusammenhang mit einem inkrementellen Batch wiederherzustellen, löst die Änderung des Auslöseintervalls dieses Problem nicht, da der Batch immer noch abgeschlossen werden muss. Databricks empfiehlt die Hochskalierung der Computekapazität, die zum Verarbeiten des Batches verwendet wird, um das Problem zu beheben. In seltenen Fällen müssen Sie den Stream möglicherweise mit einem neuen Prüfpunkt neu starten.

Was ist der fortlaufende Verarbeitungsmodus?

Apache Spark unterstützt ein zusätzliches Triggerintervall, das als Fortlaufende Verarbeitung bezeichnet wird. Dieser Modus ist seit Spark 2.3 als experimentell eingestuft. Wenden Sie sich an Ihr Azure Databricks-Kontoteam, um sicherzustellen, dass Sie die Nachteile dieses Verarbeitungsmodells verstehen.

Beachten Sie, dass dieser fortlaufende Verarbeitungsmodus überhaupt nichts mit der fortlaufenden Verarbeitung zu tun hat, wie sie in Delta Live Tables angewendet wird.