Debuggen benutzerdefinierter Funktionen in Azure Stream Analytics

Wenn benutzerdefinierte Funktionen (UDF) nicht erwartungsgemäß funktionieren, müssen Sie sie debuggen, um das Problem zu ermitteln. Sie können UDFs für Ihre Stream Analytics-Aufträge, wenn Sie Ihre Aufträge lokal ausführen, mit Visual Studio Code oder Visual Studio debuggen.

Wenn Sie Ihren Auftrag lokal mit einem Liveeingabestream ausführen, wird die Ausführung der Azure Stream Analytics-Cloud-Engine lediglich auf einem Knoten imitiert. Das lokale Testen von Livedaten kann die in der Cloud durchgeführten Leistungs- und Skalierbarkeitstests zwar nicht ersetzen, Sie können aber während der Funktionstests Zeit sparen, weil Sie Ihren Auftrag nicht bei jedem Testen in die Cloud übermitteln müssen. Außerdem sind Zeitrichtlinien für die lokale Ausführung mit lokalen oder Beispieldaten deaktiviert, aber für Livedatentests werden Zeitrichtlinien unterstützt.

Auswählen Ihrer Sprache

Sie können UDFs für Azure Stream Analytics mit .NET (C#) oder JavaScript schreiben.

Funktionen in C#

Wenn Sie .NET-UDFs mit Visual Studio schreiben, erhalten Sie dasselbe Maß an Unterstützung, wie für jedes beliebige .NET-Klassenprojekt. Diese Unterstützung umfasst Folgendes:

  • Kompilierungsunterstützung, z. B. Syntaxprüfung und Compilerunterstützung.

  • Die Möglichkeit ein C#-Projekt und Artefakte in Ihrer Stream Analytics-Lösung hinzuzufügen, zu erstellen und darauf zu verweisen.

  • Einfache Wiederverwendung von Code, der in ein freigegebenes Projekt gekapselt ist.

  • Unterstützung für das direkte Debuggen in Visual Studio. Legen Sie das Stream Analytics-Projekt als Startprojekt fest, und setzen Sie Haltepunkte im C#-Code. Drücken Sie dann F5, um C#-Code zu debuggen, wie Sie es bei jedem anderen C#-Projekt machen würden.

Funktionen in JavaScript

JavaScript ist eine weitere Option zum Erstellen von Funktionen in Stream Analytics. Der JavaScript-Code wird direkt in den Funktionsbereich des Stream Analytics-Projekts eingefügt, was die projektübergreifende gemeinsame Nutzung erschwert.

Die Kompilierung erfolgt, wenn das Stream Analytics-Projekt kompiliert oder ausgeführt wird. Es ist wahrscheinlicher, dass ein Problem erst zur Laufzeit entdeckt wird. Es gibt keine Unterstützung für das direkte Debuggen von JavaScript-Funktionen in Stream Analytics.

Debugoptionen für JavaScript

Da keine Unterstützung für das direkte Debuggen von JavaScript-Funktionen in Stream Analytics vorhanden ist, können Sie Debuggen, indem Sie die Funktion in eine HTML-Website kapseln und die Ausgabe von dort abrufen.

Im folgenden Beispiel wird gezeigt, wie Sie JavaScript-UDFs mit einigen Einschränkungen in einer integrierten Laufzeitumgebung in Visual Studio Code debuggen.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Ihr Azure Stream Analytics-Projekt die folgenden Elemente enthält:

  • Eine Eingabe
  • Eine Ausgabe
  • Eine Stream Analytics-Abfrage (.asaql)
  • Eine Stream Analytics-Auftragskonfiguration (JobConfig.json)
  • Eine JavaScript-UDF

Vorbereiten von Dateien

In der folgenden Abbildung enthält die .asaql-Abfragedatei nur den Aufruf der UDF fxcharCount. Durch diese Änderung wird sichergestellt, dass Sie das Projekt auch nach dem Vornehmen von Änderungen noch kompilieren können.

Stream Analytics-Testabfragedatei

Erstellen Sie einen zusätzlichen Ordner in Tests, um die Testdatei zu hosten, die aufgerufen wird, um den Test mit der JavaScript-Funktion auszuführen. In diesem Beispiel lautet der Name des Ordners fxcharCount, und der Name des Tests ist Test_UDF.js.

Die folgende Abbildung zeigt den Code in der Testdatei, der die Funktionsdatei lädt und die Funktion ausführt. Dieses Beispiel ist einfach, aber Sie könnten auch zusätzliche Testdatendateien laden und weitere Tests durchlaufen, um die Ausgabe zu erhalten. Die Notation des Funktionsaufrufs unterscheidet sich geringfügig von den gängigen Aufrufen, da auf die Datei verwiesen wird, und sie nicht in die Laufzeit geladen wird, sodass sie debuggt werden kann.

Stream Analytics-Testdatei

Fügen Sie in der Funktion der Datei die folgenden Codezeilen hinzu, um die Methoden verfügbar zu machen. Sie wirken sich nicht auf die Kompilierfähigkeit des Codes in Visual Studio Code aus.

var methods = {};
methods.fxchartCount = fxchartCount;
exports.data = methods;

Stream-Analytics-JavaScript-UDF

Installieren von Debugunterstützung

Um zu debuggen, müssen Sie node.jsherunterladen und installieren. Installieren Sie die richtige Version entsprechend der von Ihnen verwendeten Plattform. Nachdem Sie die „node.js“-Laufzeit installiert haben, starten Sie Visual Studio Code neu, um die Änderungen zu implementieren.

Wählen Sie Ausführen und debuggen aus, oder drücken Sie STRG+UMSCHALT+D, um das Debuggen zu starten. Ein Kombinationsfeld wird angezeigt, in dem Sie node.js als Laufzeit auswählen können. Wenn Sie nur „node.js“ installiert haben, wird sie standardmäßig verwendet. Sie sollten in der Lage sein, den Code schrittweise zu durchlaufen und bei Bedarf mit F11 in die Satellitendatei zu wechseln.

Stream Analytics: UDF ausführen und debuggen

Debuggen benutzerdefinierter Aggregate

Sie können die Debugmethode für JavaScript-UDFs zum Debuggen von benutzerdefinierten Aggregaten (UDA) verwenden. In diesem Beispiel wird der .asaql-Abfragedatei und der Testdatei ein UDA hinzugefügt.

Wie bei der UDF fügen Sie auch einen Aufruf des UDA ein, um sicherzustellen, dass sich das Projekt nach dem Vornehmen von Änderungen noch kompilieren lässt.

Hinzufügen einer UDA zu asaql

In der Datei Test_UDA.js verweisen Sie auf die UDA-Datei, wie Sie es mit der UDF getan haben. Außerdem rufen Sie main(), init() und accumulate() auf. Die accumulate()-Methode wird in einer Schleife aufgerufen, um die Werte in den Zustandsstapel einzufügen. Die computeresult()-Methode wird aufgerufen, um die abschließende Abfrage zu verfassen.

UDA-Testdatei

Wie im UDF-Beispiel muss dem UDA selbst Code hinzugefügt werden, um die relevanten Methoden verfügbar zu machen.

var methods = {};
methods.main = main;
methods.init = main.init;
methods.accumulate = main.accumulate;
methods.computeResult = main.computeResult;
exports.data = methods;

Zu UDA hinzugefügter Code

Wählen Sie Ausführen und debuggen aus, oder drücken Sie STRG+UMSCHALT+D, um das Debuggen zu starten. Ein Kombinationsfeld wird angezeigt, in dem Sie node.js als Laufzeit auswählen können. Wenn Sie nur „node.js“ installiert haben, wird sie standardmäßig verwendet. Sie sollten in der Lage sein, den Code schrittweise zu durchlaufen und bei Bedarf mit F11 in die Satellitendatei zu wechseln.

Stream Analytics: UDA ausführen und debuggen

Nächste Schritte