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.