Ausgelöster und fortlaufender Pipelinemodus

Ausgelöste und fortlaufende Pipelinemodi steuern, wie eine Pipeline Daten verarbeitet: Der ausgelöste Modus aktualisiert die verfügbaren Daten und stoppt, während der fortlaufende Modus Tabellen frisch hält, wenn neue Daten eintreffen. Für Arbeitslasten, die eine Latenz im Millisekundenbereich erfordern, siehe Verwenden des Echtzeitmodus in Lakeflow-Pipelines.

Der Pipelinemodus ist unabhängig vom Typ der zu berechnenden Tabelle. Sowohl materialisierte Ansichten als auch Streamingtabellen können im Pipelinemodus aktualisiert werden.

Verwenden Sie die Option " Pipelinemodus " in den Pipelineeinstellungen beim Erstellen oder Bearbeiten einer Pipeline, um zwischen ausgelöster und fortlaufender Funktion zu wechseln. Siehe Konfigurieren von Pipelines.

Hinweis

Aktualisierungsvorgänge für eigenständige materialisierte Ansichten und Streamingtabellen werden immer im ausgelösten Pipelinemodus ausgeführt.

Was wird durch den Pipelinemodus ausgelöst?

Wenn die Pipeline den Triggermodus verwendet, stoppt das System nach der Aktualisierung aller Tabellen auf Grundlage der Daten, die beim Start der Aktualisierung verfügbar waren.

Was ist der kontinuierliche Pipelinemodus?

Wenn die Pipeline fortlaufende Ausführung verwendet, verarbeitet sie neue Daten, sobald sie in Datenquellen eintreffen, um Tabellen während der gesamten Pipeline aktuell zu halten.

Um unnötige Verarbeitung im Fortlaufenden Ausführungsmodus zu vermeiden, überwachen Pipelines abhängige Delta-Tabellen automatisch und führen nur dann eine Aktualisierung durch, wenn sich der Inhalt dieser abhängigen Tabellen geändert hat.

Auswählen eines Datenpipelinemodus

In der folgenden Tabelle werden die Unterschiede zwischen ausgelösten und fortlaufenden Pipelinemodi hervorgehoben:

Kernfragen Ausgelöst Fortlaufend
Wann wird das Update beendet? Automatisch nach Abschluss Wird kontinuierlich ausgeführt, bis der Vorgang manuell beendet wird.
Welche Daten werden verarbeitet? Daten, die beim Starten des Updates verfügbar sind. Alle Daten, sobald sie an konfigurierten Quellen eingehen.
Für welche Anforderungen an die Aktualität von Daten ist dies am besten geeignet? Datenaktualisierungen werden alle 10 Minuten, stündlich oder täglich ausgeführt. Datenaktualisierungen werden zwischen 10 Sekunden und ein paar Minuten gewünscht.

Ausgelöste Pipelines können Ressourcenverbrauch und -kosten reduzieren, da der Cluster nur lange genug ausgeführt wird, um die Pipeline zu aktualisieren. Neue Daten werden jedoch erst verarbeitet, wenn die Pipeline ausgelöst wird. Kontinuierliche Pipelines erfordern einen ständig laufenden Cluster, was teurer ist, aber die Bearbeitungslatenz reduziert.

Festlegen des Triggerintervalls für fortlaufende Pipelines

Beim Konfigurieren von Pipelines für den fortlaufenden Modus können Sie Triggerintervalle festlegen, um zu steuern, wie häufig die Pipeline ein Update für jeden Fluss startet.

Sie können pipelines.trigger.interval verwenden, um das Auslöserintervall für einen Flow, der eine Tabelle oder eine gesamte Pipeline aktualisiert, zu steuern. Da eine ausgelöste Pipeline jede Tabelle einmal verarbeitet, wird pipelines.trigger.interval nur bei fortlaufenden Pipelines verwendet.

Databricks empfiehlt die Einstellung pipelines.trigger.interval für einzelne Tabellen, da Streaming- und Batchabfragen unterschiedliche Standardwerte aufweisen. Legen Sie den Wert für eine Pipeline nur dann fest, wenn für die Verarbeitung Aktualisierungen für das gesamte Pipelinediagramm erforderlich sind.

Für eine Tabelle kann pipelines.trigger.interval mithilfe von spark_conf (Python) bzw. mithilfe von SET (SQL) festgelegt werden:

@dp.table(
  spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
    return (<query>)
SET pipelines.trigger.interval=10 seconds;

CREATE OR REFRESH MATERIALIZED VIEW TABLE_NAME
AS SELECT ...

Um pipelines.trigger.interval in einer Pipeline festzulegen, fügen Sie es dem configuration-Objekt in den Pipelineeinstellungen hinzu.

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}