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 Sie die Ergebnisse in eine Ausgabe, z. B. Azure Data Lake Storage Gen2, Azure SQL-Datenbank, Azure Cosmos DB, Azure Functions, Azure Event Hubs, Microsoft Power BI oder andere.
Nach dem Start wird eine Stream Analytics-Abfrage unbefristet ausgeführt, wobei neue Daten verarbeitet werden, sobald sie in der Eingabe eingehen und Ergebnisse in der Ausgabe speichern.
Stream Analytics garantiert genau einmal Ereignisverarbeitung und mindestens einmal Ereignisübermittlung, sodass Ereignisse nie verloren gehen. Die Anwendung verfügt über integrierte Wiederherstellungsfunktionen für den Fall, dass für ein Ereignis ein Fehler auftritt. Außerdem bietet Stream Analytics integrierte Prüfpunkte, um den Status Ihres Auftrags aufrechtzuerhalten und wiederholbare Ergebnisse zu erzielen. Da Azure Stream Analytics eine Plattform-as-a-Service(PaaS)-Lösung ist, wird sie vollständig verwaltet und sehr zuverlässig. Die integrierte Integration mit verschiedenen Quellen und Zielen bietet ein flexibles Programmierbarkeitsmodell. Das Stream Analytics-Modul ermöglicht die In-Memory-Berechnung, sodass es eine hohe Leistung bietet.
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 Ihre Datenstromprozessanforderungen komplex oder ressourcenintensiv sind, können Sie einen Stream Analysis-Cluster erstellen, der dasselbe zugrunde liegende Verarbeitungsmodul wie ein Stream Analytics-Auftrag verwendet, aber in einem dedizierten Mandanten (sodass Ihre Verarbeitung von anderen Kunden nicht betroffen ist) und mit konfigurierbarer Skalierbarkeit, mit der Sie das richtige Gleichgewicht zwischen Durchsatz und Kosten für Ihr spezifisches Szenario definieren können.
Eingänge
Azure Stream Analytics kann Daten aus den folgenden Arten von Eingaben aufnehmen:
- Azure Event Hubs
- Azure IoT Hub
- Azure Blob-Speicher
- Azure Data Lake Storage Gen2
- Apache Kafka
Inputs werden in der Regel verwendet, um auf eine Quelle von Streamingdaten zu verweisen, die verarbeitet wird, sobald neue Ereignisdatensätze hinzugefügt werden. Darüber hinaus können Sie Referenzeingaben definieren, die zum Aufnehmen statischer Daten verwendet werden, um die Echtzeitereignisstreamdaten zu erweitern. Sie können z. B. einen Datenstrom mit Echtzeit-Wetterbeobachtungsdaten aufnehmen, die eine eindeutige ID für jede Wetterstation enthalten, und diese Daten mit einer statischen Referenzeingabe erweitern, die der Wetterstations-ID entspricht, um einen aussagekräftigeren Namen zu erhalten.
Ausgaben
Ausgaben sind Ziele, an die die Ergebnisse der Datenstromverarbeitung gesendet werden. Azure Stream Analytics unterstützt eine Vielzahl von Ausgabesenken, die verwendet werden können, um:
- Beibehalten von Ergebnissen für weitere Analysen; Beispielsweise durch Schreiben in Azure Data Lake Storage Gen2, Azure SQL-Datenbank oder Azure Cosmos DB.
- Analysieren von Protokoll- und Telemetriedaten im großen Maßstab; Beispielsweise durch Senden von Ergebnissen an Azure Data Explorer.
- Anzeigen einer Echtzeitvisualisierung des Datenstroms; Beispielsweise durch Anfügen von Daten an ein Dataset in Microsoft Power BI.
- Generieren sie gefilterte oder zusammengefasste Ereignisse für die nachgeschaltete Verarbeitung; Beispielsweise durch Schreiben von Ergebnissen in Azure Event Hubs.
Fragen
Die Datenstromverarbeitungslogik wird in einer Abfrage gekapselt. Abfragen werden mithilfe von SQL-Anweisungen definiert, die SELECT-DatenfelderAUS einer oder mehreren Eingaben auswählen, die Daten filtern oder aggregieren und die Ergebnisse in eine Ausgabe schreiben. Die folgende Abfrage filtert beispielsweise die Ereignisse aus der Wetterereignisseeingabe , um nur Daten aus Ereignissen mit einem Temperaturwert unter 0 einzuschließen, und schreibt die Ergebnisse in die Kalttemperaturausgabe :
SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0
Ein Feld mit dem Namen "EventProcessedUtcTime " wird automatisch 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 ein anderes DateTime-Feld explizit mithilfe der TIMESTAMP BY-Klausel angeben, wie in diesem Beispiel gezeigt. Abhängig von der Eingabe, aus der die Streamingdaten gelesen werden, können ein oder mehrere potenzielle Zeitstempelfelder automatisch erstellt werden; Wenn Sie beispielsweise eine Event Hubs-Eingabe verwenden, wird ein Feld mit dem Namen "EventQueuedUtcTime " generiert, um die Uhrzeit aufzuzeichnen, zu der das Ereignis in der Event Hub-Warteschlange empfangen wurde.
Das feld, das als Zeitstempel verwendet wird, ist wichtig, wenn Daten über zeitliche Fenster aggregiert werden, die als Nächstes erläutert werden.
Kein Code-Editor
Wenn Sie ihren Datenstromverarbeitungsauftrag lieber erstellen möchten, ohne SQL zu schreiben, enthält Azure Stream Analytics einen Code-Editor ohne Code. Sie können über das Azure Stream Analytics-Portal oder über das Azure Event Hubs-Portal darauf zugreifen. Der No-Code-Editor bietet einen Drag-and-Drop-Canvas, in dem Sie Eingabequellen verbinden, Transformationen (einschließlich Fenstern und Aggregationen) hinzufügen und Ausgaben konfigurieren – ohne Code zu schreiben.
Sie können den No-Code-Editor verwenden, um schnell Prototypen zu erstellen und dann optional die generierte SQL-Abfrage für erweiterte Szenarien anzuzeigen oder anzupassen.