Freigeben über


Batch- und Streamingdatenverarbeitung in Azure Databricks

In diesem Artikel werden die wichtigsten Unterschiede zwischen Batch und Streaming beschrieben, zwei verschiedene Datenverarbeitungssemantiken, die für Data-Engineering-Workloads verwendet werden, einschließlich Aufnahme, Transformation und Echtzeitverarbeitung.

Streaming ist in der Regel mit geringer Latenz und kontinuierlicher Verarbeitung von Nachrichtenbussen wie Apache Kafka verbunden.

In Azure Databricks hat es jedoch eine umfangreichere Definition. Das zugrunde liegende Modul von Lakeflow Declarative Pipelines (Apache Spark und Structured Streaming) verfügt über eine einheitliche Architektur für die Batch- und Streamingverarbeitung:

  • Das Modul kann Quellen wie Cloudobjektspeicher und Delta Lake als Streamingquellen für eine effiziente inkrementelle Verarbeitung behandeln.
  • Die Streamingverarbeitung kann sowohl ausgelöst als auch kontinuierlich ausgeführt werden, sodass Sie die Flexibilität haben, Kosten und Leistungsanforderungen für Ihre Streaming-Arbeitslasten anzupassen.

Nachfolgend finden Sie die grundlegenden semantischen Unterschiede, die Batch- und Streaming unterscheiden, einschließlich deren Vor- und Nachteile sowie Überlegungen zur Auswahl für Ihre Workloads.

Batchsemantik

Bei der Batchverarbeitung verfolgt das Modul nicht, welche Daten bereits in der Quelle verarbeitet werden. Alle derzeit in der Quelle verfügbaren Daten werden zum Zeitpunkt der Verarbeitung verarbeitet. In der Praxis wird eine Batchdatenquelle in der Regel logisch partitioniert, z. B. nach Tag oder Region, um die Datenverarbeitung einzuschränken.

Beispielsweise kann die Berechnung des durchschnittlichen Artikelverkaufspreises, stündlich aggregiert für ein von einem E-Commerce-Unternehmen durchgeführtes Verkaufsereignis, als Batchverarbeitung geplant werden, um jede Stunde den durchschnittlichen Verkaufspreis zu berechnen. Bei Batch werden Daten aus früheren Stunden jede Stunde neu verarbeitet, und die zuvor berechneten Ergebnisse werden überschrieben, um die neuesten Ergebnisse widerzuspiegeln.

Stapelverarbeitung

Streamingsemantik

Mit der Streamingverarbeitung verfolgt das Modul, welche Daten verarbeitet werden, und verarbeitet nur neue Daten in nachfolgenden Ausführungen. Im obigen Beispiel können Sie die Streamingverarbeitung anstelle der Batchverarbeitung planen, um den durchschnittlichen Verkaufspreis jede Stunde zu berechnen. Beim Streaming werden nur neue Daten, die der Quelle seit der letzten Ausführung hinzugefügt wurden, verarbeitet. Die neu berechneten Ergebnisse müssen an die zuvor berechneten Ergebnisse angefügt werden, um die vollständigen Ergebnisse zu überprüfen.

Streamingverarbeitung

Batch im Vergleich zum Streaming

Im obigen Beispiel ist Streaming besser als die Batchverarbeitung, da sie nicht dieselben Daten verarbeitet, die in früheren Ausführungen verarbeitet wurden. Die Streamingverarbeitung wird jedoch komplexer mit Szenarien wie unsortierten und verspätet eintreffenden Daten in der Datenquelle.

Ein Beispiel für späte Ankunftsdaten ist, wenn einige Umsatzdaten aus der ersten Stunde erst nach der zweiten Stunde an der Quelle ankommen:

  • Bei der Batchverarbeitung werden die Spätankunftsdaten aus der ersten Stunde mit Daten aus der zweiten Stunde und vorhandenen Daten aus der ersten Stunde verarbeitet. Die vorherigen Ergebnisse aus der ersten Stunde werden überschrieben und mit den Verspäteten Ankunftsdaten korrigiert.
  • Bei der Streamingverarbeitung werden die verspätet eintreffenden Daten aus der ersten Stunde ohne die bereits verarbeiteten anderen Daten der ersten Stunde verarbeitet. Die Verarbeitungslogik muss die Summen- und Zählungsinformationen aus den Durchschnittsberechnungen der ersten Stunde speichern, um die vorherigen Ergebnisse ordnungsgemäß zu aktualisieren.

Diese Komplexitäten des Streamings werden in der Regel eingeführt, wenn die Verarbeitung zustandsbehaftet ist, z. B. Verknüpfungen, Aggregationen und Deduplizierungen.

Für die zustandslose Streamingverarbeitung, wie das Anfügen neuer Daten aus der Quelle, ist die Verarbeitung von Out-of-Order- und Spätankunftsdaten weniger komplex, da die spät eingehenden Daten beim Eintreffen in der Quelle an die vorherigen Ergebnisse angefügt werden können.

In der folgenden Tabelle sind die Vor- und Nachteile der Batch- und Streamingverarbeitung sowie die verschiedenen Produktfeatures aufgeführt, die diese beiden Verarbeitungsemantik in Databricks Lakeflow unterstützen.

Stapel Streamen
Vorteile
  • Die Verarbeitungslogik ist einfach.
  • Die Ergebnisse sind immer genau und spiegeln alle verfügbaren Daten in der Quelle wider.
  • Effizient, nur neue Daten werden verarbeitet.
  • Schneller könnten Latenzanforderungen von Stunden auf Minuten, Sekunden und Millisekunden reduziert werden.
Nachteile
  • Es ist nicht so effizient; Daten werden in einer bestimmten Batchpartition erneut verarbeitet.
  • Langsamere Systeme könnten Latenzanforderungen von Stunden auf Minuten reduzieren, jedoch nicht auf Sekunden oder Millisekunden.
  • Die Verarbeitungslogik kann komplex sein, insbesondere für zustandsbehaftete Verarbeitung wie Verknüpfungen, Aggregationen, Deduplizierungen usw.
  • Ergebnisse können nicht immer genau sein, wenn man Daten berücksichtigt, die außerhalb der Reihenfolge oder verspätet eintreffen.
Data Engineering-Produkte

Empfehlungen

Die folgende Tabelle enthält die empfohlene Verarbeitungsemantik basierend auf den Merkmalen der Datenverarbeitungsworkloads auf jeder Ebene der Medallion-Architektur.

Medaillonschicht Arbeitsauslastungsmerkmale Empfehlung
Bronze
  • Aufnahmearbeitslasten.
  • Normalerweise beinhaltet dies keine oder eine zustandslose Verarbeitung für das inkrementelle Anfügen aus Datenquellen.
  • Die Datengröße ist in der Regel größer.
  • Im Allgemeinen ist die Streamingverarbeitung die bessere Wahl, da Benutzer von den Vorteilen des Streamings profitieren können, ohne den Komplexitäten einer zustandsorientierten Streamingverarbeitung ausgesetzt zu werden.
Silber
  • Transformationslasten.
  • Umfasst in der Regel sowohl zustandslose Verarbeitungen wie Filtern als auch zustandsbehaftete Verarbeitungen wie Verknüpfungen, Aggregationen und Deduplizierungen.
  • Verwenden Sie die Batchverarbeitung (mit inkrementeller Aktualisierung in materialisierten Ansichten), um die Komplexität der zustandsbehafteten Streamingverarbeitung zu vermeiden.
  • Verwenden Sie die Streamingverarbeitung als Option für Anwendungsfälle, in denen Effizienz und Latenz viel wichtiger sind als die Ergebnisgenauigkeit. Seien Sie sich der Komplexitäten bewusst, die durch die zustandsbehaftete Streamingverarbeitung entstehen.
Gold
  • Letzte-Meile-Aggregationsaufgaben.
  • Umfasst in der Regel zustandsbehaftete Verarbeitung, z. B. Verknüpfungen und Aggregationen.
  • Die Größe der Daten ist im Allgemeinen kleiner.
  • Verwenden Sie die Batchverarbeitung (mit inkrementeller Aktualisierung in materialisierten Ansichten), um die Komplexität der zustandsbehafteten Streamingverarbeitung zu vermeiden.