Grundlegendes zur Ereignisverarbeitung
Azure Stream Analytics ist ein Dienst für die komplexe Ereignisverarbeitung und die Analyse von Streamingdaten. Stream Analytics wird für folgende Aufgaben eingesetzt:
- Erfassen von Daten aus einer Eingabe, beispielsweise aus Azure Event Hubs, Azure IoT Hub oder aus einem Azure Storage Blob-Container
- Verarbeiten der Daten mithilfe einer Abfrage zum Auswählen, Hochrechnen und Aggregieren von Datenwerten
- Schreiben der Ergebnisse in eine Ausgabe, wie Azure Data Lake Gen 2, Azure SQL Database, Azure Synapse Analytics, Azure Functions, Azure Event Hubs, Microsoft Power BI oder andere
Nach dem Start wird eine Stream Analytics-Abfrage fortlaufend ausgeführt, verarbeitet neue Daten, sobald sie eingehen, und speichert die Ergebnisse in der Ausgabe.
Für Stream Analytics wird die Exactly-Once-Ereignisverarbeitung (genau einmal) und die At-Least-Once-Ereigniszustellung (mindestens einmal) garantiert, sodass Ereignisse niemals verloren gehen. Die Anwendung verfügt über integrierte Wiederherstellungsfunktionen für den Fall, dass für ein Ereignis ein Fehler auftritt. Darüber hinaus verfügt Stream Analytics über eine integrierte Prüfpunktausführung, um den Zustand Ihres Auftrags zu erhalten und wiederholbare Ergebnisse zu generieren. Da es sich bei Azure Stream Analytics um eine PaaS-Lösung (Platform-as-a-Service) handelt, ist sie vollständig verwaltet und äußerst zuverlässig. Sie ist standardmäßig in verschiedene Quellen und Ziele integriert und bietet ein flexibles Programmierbarkeitsmodell. Da die Stream Analytics-Engine In-Memory-Berechnungen ermöglicht, bietet sie eine hohe Leistung.
Azure Stream Analytics-Aufträge und -Cluster
Die einfachste Möglichkeit zur Verwendung von Azure Stream Analytics besteht darin, einen Stream Analytics-Auftrag in einem Azure-Abonnement zu erstellen, dessen Ein- und Ausgaben zu konfigurieren und die Abfrage zu definieren, die der Auftrag zur Verarbeitung der Daten verwenden soll. Die Abfrage wird unter Verwendung der SQL-Syntax (Structured Query Language) formuliert und kann statische Referenzdaten aus mehreren Datenquellen enthalten, um Nachschlagewerte zu liefern, die mit in der Eingabe erfassten Streamingdaten kombiniert werden können.
Wenn die Anforderungen an Ihre Streamprozesse komplex oder ressourcenintensiv sind, können Sie einen Stream Analytics-Cluster erstellen. Dieser nutzt dieselbe zugrunde liegende Verarbeitungs-Engine wie ein Stream Analytics-Auftrag, verwendet jedoch einen dedizierten Mandanten (sodass die Verarbeitung nicht von anderen Kunden beeinflusst wird), und seine Skalierbarkeit kann so konfiguriert werden, dass Sie das richtige Verhältnis zwischen Durchsatz und Kosten für Ihr spezifisches Szenario definieren können.
Eingaben
Azure Stream Analytics kann Daten aus den folgenden Eingaben erfassen:
- Azure Event Hubs
- Azure IoT Hub
- Azure Blob Storage
- Azure Data Lake Storage Gen2
Eingaben werden im Allgemeinen verwendet, um auf eine Quelle für Streamingdaten zu verweisen, die verarbeitet werden, wenn neue Ereignisdatensätze hinzugefügt werden. Darüber hinaus können Sie Verweiseingaben definieren, die zum Erfassen statischer Daten verwendet werden, um die Ereignisdaten aus Echtzeitdatenströmen zu ergänzen. Sie könnten beispielsweise einen Stream von Echtzeitdaten aus der Wetterbeobachtung erfassen, der eine eindeutige ID für jede Wetterstation enthält, und diese Daten mit einer statischen Verweiseingabe erweitern, die die Wetterstations-ID mit einem aussagekräftigeren Namen abgleicht.
Ausgaben
Ausgaben sind Ziele, an die die Ergebnisse der Datenstromverarbeitung gesendet werden. Azure Stream Analytics unterstützt eine Vielzahl von Ausgaben, die für Folgendes verwendet werden können:
- Beibehalten der Ergebnisse der Datenstromverarbeitung für weitere Analysen, z. B. durch Laden in einen Data Lake oder ein Data Warehouse
- Anzeigen einer Echtzeitvisualisierung des Datenstroms, z. B. durch das Anfügen von Daten an ein Dataset in Microsoft Power BI
- Generieren gefilterter oder zusammengefasster Ereignisse für die nachfolgende Verarbeitung, z. B. durch das Schreiben der Ergebnisse der Datenstromverarbeitung in einen Event Hub
Abfragen
Die Verarbeitungslogik für Datenströme wird in einer Abfrage gekapselt. Abfragen werden mithilfe von SQL-Anweisungen definiert, die per SELECT Datenfelder aus (FROM) einer oder mehreren Eingaben auswählen, die Daten filtern oder aggregieren und die Ergebnisse in (INTO) eine Ausgabe schreiben. Die folgende Abfrage filtert beispielsweise die Ereignisse aus der Eingabe weather-events so, dass nur Daten von Ereignissen mit einem temperature-Wert kleiner als 0 enthalten sind, und schreibt die Ergebnisse dann in die Ausgabe cold-temps:
SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0
Es wird automatisch ein Feld mit dem Namen EventProcessedUtcTime erstellt, um den Zeitpunkt zu definieren, zu dem das Ereignis von Ihrer Azure Stream Analytics-Abfrage verarbeitet wird. Sie können dieses Feld verwenden, um den Zeitstempel des Ereignisses zu bestimmen, oder Sie können explizit ein anderes DateTime-Feld angeben, indem Sie die TIMESTAMP BY-Klausel verwenden, wie in diesem Beispiel gezeigt. Abhängig von der Eingabe, aus der die Streamingdaten gelesen werden, können automatisch eines oder mehrere potenzielle Zeitstempelfelder erstellt werden. Wenn Sie beispielsweise eine Event Hubs-Eingabe verwenden, wird ein Feld mit dem Namen EventQueuedUtcTime generiert, um den Zeitpunkt aufzuzeichnen, zu dem das Ereignis in der Event Hub-Warteschlange empfangen wurde.
Das als Zeitstempel verwendete Feld ist wichtig, wenn Sie Daten über temporale Fenster aggregieren, was als Nächstes erläutert wird.