Was sind Lakeflow-Pipelines?

Lakeflow-Pipelines bieten ein deklaratives Framework zum Erstellen von Batch- und Streamingdatenpipelines in SQL und Python. Ihre Kernkonzepte sind Pipelines, Flüsse, Streamingtabellen, materialisierte Ansichten und Senken, die zusammenarbeiten, um Daten mit automatischer Orchestrierung und inkrementellen Aktualisierungen zu verarbeiten.

Lakeflow-Pipelines erweitern Apache Spark™ Declarative Pipelines (SDP). Weitere Informationen zu SDP und deren Vergleich mit Lakeflow-Pipelines finden Sie unter Apache Spark Declarative Pipelines.

Hinweis

Lakeflow-Pipelines erfordern den Premium-Plan. Wenden Sie sich an Ihr Databricks-Kontoteam, um weitere Informationen zu erfahren.

Was sind die Vorteile von Pipelines?

Im Gegensatz zur Entwicklung von Datentechnikprozessen mit den Apache Spark und Spark Structured Streaming APIs auf der Databricks Runtime mithilfe manueller Orchestrierung über Lakeflow Jobs bietet die deklarative Natur von Pipelines die folgenden Vorteile:

  • Automatische Orchestrierung: Pipelines führen Verarbeitungsschritte (als „Flows“ bezeichnet) in der richtigen Reihenfolge mit maximaler Parallelität aus und versuchen die Verarbeitung bei vorübergehenden Fehlern schrittweise erneut – von der Spark-Aufgabe über den Flow bis hin zur gesamten Pipeline.
  • Deklarative Verarbeitung: Deklarative Funktionen reduzieren Hunderte von Zeilen mit manuellem Spark- und Structured Streaming-Code auf ein paar. Die AUTO CDC-API behandelt Ereignisse der Änderungsdatenerfassung (Change Data Capture, CDC), einschließlich SCD Typ 1 und Typ 2, ohne manuellen Code für Out-of-Order-Ereignisse oder Streamingkonzepte wie Wasserzeichen.
  • Inkrementelle Verarbeitung: Ein inkrementelles Verarbeitungsmodul hält materialisierte Ansichten aktuell: Sie schreiben Transformationslogik mit Batchsemantik, und das Modul verarbeitet nach Möglichkeit nur neue oder geänderte Quelldaten.

Wichtige Konzepte

Das folgende Diagramm veranschaulicht die wichtigsten Konzepte von Pipelines.

Ein Diagramm, das zeigt, wie sich die Kernkonzepte von Pipelines auf sehr hoher Ebene miteinander verbinden

Datensätze

Eine Pipeline erzeugt drei Arten von Datasets, jeweils mit unterschiedlicher Verarbeitungsemantik:

Datasettyp Wie Datensätze verarbeitet werden
Streamingtabelle Jeder Datensatz wird genau einmal verarbeitet, unter der Annahme, dass es sich um eine Quelle handelt, an die nur angehängt wird. Streamingtabellen eignen sich für die Erfassung und inkrementelle Verarbeitung kontinuierlich wachsender Daten.
Materialisierte Sicht Die Ergebnisse werden nach Bedarf neu komputiert, um den aktuellen Status der Daten widerzuspiegeln. Materialisierte Ansichten eignen sich für Transformationen, Aggregationen oder Vorabberechnungsergebnisse, die von mehreren nachgelagerten Datasets genutzt werden.
Ansicht Wird bei Bedarf ausgewertet und nicht persistent gespeichert. Verwenden Sie Ansichten für Zwischentransformationen und Überprüfungen, die nicht in einem Katalog veröffentlicht werden müssen.

Eine Streamingtabelle ist eine Form der verwalteten Unity-Katalog-Tabelle, die auch ein Streamingziel ist. Eine Streamingtabelle kann einen oder mehrere Streamingflüsse (Append, AUTO CDC) in die Tabelle schreiben. Sie können Streamingflüsse explizit und separat von der Zielstreamingtabelle oder implizit als Teil einer Streamingtabellendefinition definieren.

Eine materialisierte Ansicht ist auch eine Art von Unity Catalog-verwalteter Tabelle und ein Batch-Ziel. In eine materialisierte Sicht können ein oder mehrere materialisierte Ansichtsflows geschrieben werden. Materialisierte Ansichten unterscheiden sich von Streamingtabellen darin, dass Sie die Flüsse immer implizit als Teil der materialisierten Ansichtsdefinition definieren.

Ausführliche Informationen finden Sie unter Streamingtabellen und materialisierte Ansichten.

Wann Ansichten, materialisierte Ansichten und Streamingtabellen verwendet werden sollten

Wählen Sie beim Implementieren von Pipelineabfragen den Datasettyp aus, der ihrem Anwendungsfall am besten entspricht.

Erwägen Sie die Verwendung einer Sicht für Folgendes:

  • Unterteilen Sie eine große oder komplexe Abfrage in einfacher zu verwaltende Abfragen.
  • Überprüfen Sie zwischengeschaltete Ergebnisse unter Verwendung von Erwartungen.
  • Reduzieren Sie Speicher- und Berechnungskosten für Ergebnisse, die Sie nicht beibehalten müssen. Da Tabellen materialisiert werden, erfordern sie zusätzliche Berechnungs- und Speicherressourcen.

Erwägen Sie die Verwendung einer materialisierten Sicht in folgenden Fällen:

  • Die Tabelle wird von mehreren Downstreamabfragen genutzt. Da eine materialisierte Ansicht ihre Ergebnisse zwischenspeichert, lesen nachgeschaltete Abfragen die vorkompilierten Ergebnisse, anstatt die Abfrage für jeden Zugriff neu zu berechnen.
  • Andere Pipelines, Aufträge oder Abfragen nutzen die Tabelle. Da eine materialisierte Ansicht in einer Unity Catalog-Tabelle materialisiert wird, können Nutzer außerhalb der Pipeline, die sie definiert, sie abfragen. Ansichten sind nicht materialisiert, sodass Sie sie nur innerhalb derselben Pipeline verwenden können.
  • Sie möchten die Ergebnisse einer Abfrage während der Entwicklung prüfen. Da eine materialisierte Ansicht materialisiert ist und außerhalb der Pipeline abgefragt werden kann, können Sie die Korrektheit der Berechnungen während der Entwicklung überprüfen. Konvertieren Sie nach der Überprüfung diejenigen Abfragen, die keine Materialisierung erfordern, in Sichten.
  • Ihre Abfrage führt Aggregationen oder Verknüpfungen durch, oder die Quelldaten können sich aufgrund von Aktualisierungen und Löschungen ändern, anstatt nur zu wachsen. Eine materialisierte Ansicht hält ihre Ergebnisse mit dem aktuellen Zustand der Quelldaten konsistent, während eine Streamingtabelle für Quellen konzipiert ist, die nur angefügt werden, und jeden Datensatz genau einmal verarbeitet.

Ziehen Sie in folgenden Fällen die Verwendung einer Streamingtabelle in Betracht:

  • Eine Abfrage wird für eine Datenquelle definiert, die kontinuierlich oder inkrementell wächst.
  • Abfrageergebnisse sollten inkrementell berechnet werden.
  • Die Pipeline benötigt hohen Durchsatz und niedrige Latenz.

Hinweis

Streamingtabellen werden immer auf Basis von Streamingquellen definiert. Sie können auch Streamingquellen mit AUTO CDC ... INTO verwenden, um Updates aus CDC-Feeds anzuwenden. Siehe Die AUTO CDC-APIs: Vereinfachen der Änderungsdatenerfassung mit Pipelines.

Flows

Ein Flow ist das grundlegende Konzept der Datenverarbeitung in Pipelines und unterstützt sowohl Streaming- als auch Batch-Semantik. Ein Fluss liest Daten aus einer Quelle, wendet benutzerdefinierte Verarbeitungslogik an und schreibt das Ergebnis in ein Ziel. Pipelines verwenden denselben Streamingflusstyp (Append, Update, Complete) wie Spark Structured Streaming. (Derzeit werden nur die Anfüge- und Aktualisierungsflüsse verfügbar gemacht.) Weitere Informationen finden Sie unter Ausgabemodi im strukturierten Streaming.

Pipelines bieten auch zusätzliche Flusstypen:

  • AUTO CDC ist ein einzigartiger Streamingfluss in Lakeflow-Pipelines, der nicht geordnete CDC-Ereignisse verarbeitet und sowohl SCD Type 1 als auch SCD Type 2 unterstützt. Auto CDC ist in SDP nicht verfügbar.
  • Eine materialisierte Ansicht ist ein Batch-Ablauf innerhalb von Pipelines, der nach Möglichkeit nur neue Daten und Änderungen in den Quelltabellen verarbeitet.

Ausführliche Informationen finden Sie unter Laden und Verarbeiten von Daten inkrementell mit Lakeflow-Pipelineflüssen.

Waschbecken

Eine Spüle ist ein Streamingziel für eine Pipeline und unterstützt Delta-Tabellen, Apache Kafka-Themen, Azure EventHubs-Themen und benutzerdefinierte Python-Datenquellen. In eine Senke können ein oder mehrere Streamingflows (Append, Update) geschrieben werden.

Ausführliche Informationen finden Sie unter Senken in Lakeflow-Pipelines.

Pipelines

Eine Pipeline ist die Einheit der Entwicklung und Ausführung und ist der Container für die Flüsse, Streamingtabellen, materialisierte Ansichten und Senken, die Sie definieren. Sie erstellen eine Pipeline, indem Sie diese Objekte im Pipelinequellcode definieren und dann die Pipeline ausführen. Während die Pipeline ausgeführt wird, analysiert sie die Abhängigkeiten Ihrer definierten Objekte und koordiniert die Reihenfolge der Ausführung und Parallelisierung automatisch.

Weitere Informationen finden Sie unter "Was sind Pipelines?"

Sie können auch eigenständige materialisierte Ansichten und Streamingtabellen außerhalb einer Lakeflow-Pipeline definieren, in der Azure Databricks die Pipeline für Sie verwaltet. Informationen zum Vergleichen der beiden Ansätze finden Sie unter Eigenständige Pipelines im Vergleich zu Lakeflow-Pipelines.

Datenaufnahme

Pipelines unterstützen alle Datenquellen, die in Azure Databricks verfügbar sind. Databricks empfiehlt die Verwendung von Streaming-Tabellen für die meisten Datenaufnahmeanwendungsfälle. Für Dateien in Cloud-Objektspeichern bietet Auto Loader inkrementelles, idempotentes Laden. Für Streaming-Daten können Pipelines Daten direkt aus Nachrichtenbussen wie Apache Kafka, Azure Event Hubs, Amazon Kinesis und Google Pub/Sub aufnehmen. Weitere Informationen finden Sie unter Laden von Daten in Pipelines.

Datenqualität

Erwartungen sind optionale Klauseln für Datensätze, die Daten validieren, während sie die Pipeline durchlaufen. Sie definieren eine Erwartung als SQL-boolesche Einschränkung und geben an, was passiert, wenn ein Datensatz fehlschlägt: Warnen, Ablegen des Datensatzes oder Fehlschlagen der Aktualisierung. Weitere Informationen finden Sie unter Verwalten der Datenqualität mit Pipelineerwartungen.

Delta-Integration

Alle tabellen, die von Pipelines erstellt und verwaltet werden, sind Delta-Tabellen. Sie bieten dieselben Garantien wie Delta Lake, einschließlich ACID-Transaktionen, Time Travel und Schemaerzwingung. Pipelines fügen zusätzliche Tabelleneigenschaften hinzu und führen unter Verwendung von Predictive Optimization automatische Wartung durch, einschließlich der Vorgänge OPTIMIZE und VACUUM. Siehe Was ist Delta Lake in Azure Databricks?.

Weitere Ressourcen