Problembehandlung für Eingangsverbindungen
In diesem Artikel werden häufige Probleme mit Azure Stream Analytics-Eingabeverbindungen beschrieben, die Behandlung von Eingabeproblemen und die Behebung dieser Probleme.
Viele Troubleshootingschritte erfordern, dass Sie Ressourcenprotokolle für Ihren Stream Analytics-Auftrag aktivieren. Wenn Sie Ressourcenprotokolle nicht aktiviert haben, finden Sie weitere Informationen unter Problembehandlung von Azure Stream Analytics mit Ressourcenprotokollen.
Auftrag empfängt keine Eingabeereignisse
Überprüfen Sie Ihre Konnektivität mit Eingaben und Ausgaben. Verwenden Sie die Schaltfläche Verbindung testen für jede Eingabe und Ausgabe.
Überprüfen Sie die Eingabedaten:
Verwenden Sie die Schaltfläche Beispieldaten für jede Eingabe. Laden Sie die Beispieldaten für die Eingabe herunter.
Untersuchen Sie die Beispieldaten, um das Schema und die Datentypen zu verstehen.
Überprüfen Sie Azure Event Hubs-Metriken, um sicherzustellen, dass Ereignisse gesendet werden. Die Nachrichtenmetriken sollten größer als null sein, wenn Event Hubs Nachrichten empfangen.
Vergewissern Sie sich, dass Sie einen Zeitbereich in der Eingabevorschau ausgewählt haben. Wählen Sie Zeitbereich auswählen aus, und geben Sie dann eine Beispieldauer ein, bevor Sie die Abfrage testen.
Wichtig
Für Azure Stream Analytics-Aufträge, die nicht in das Netzwerk eingefügt werden, verlassen Sie sich nicht auf die Quell-IP-Adresse der Verbindungen, die aus Stream Analytics stammen. Es kann sich um öffentliche oder private IP-Adressen handeln. Dies hängt von Dienstinfrastrukturvorgängen ab, die von Zeit zu Zeit auftreten.
Falsch formatierte Eingabeereignisse führen zu Deserialisierungsfehlern
Deserialisierungsprobleme treten auf, wenn der Eingabedatenstrom Ihres Stream Analytics-Auftrags falsch formatierte Nachrichten enthält. Beispielsweise kann eine fehlende Klammer oder geschweifte Klammer in einem JSON-Objekt oder ein falsches Zeitstempelformat im Zeitfeld eine falsch formatierte Nachricht verursachen.
Wenn ein Stream Analytics-Auftrag eine falsch formatierte Nachricht aus einer Eingabe empfängt, wird diese gelöscht und Sie werden mit einer Warnung benachrichtigt. Auf der Kachel Eingaben des Stream Analytics-Auftrags wird ein Warnsymbol angezeigt. Das Warnsymbol ist so lange vorhanden, wie sich der Auftrag im Zustand „Wird ausgeführt“ befindet:
Aktivieren Sie Ressourcenprotokolle, um die Details des Fehlers sowie die Nachricht (Nutzlast) anzuzeigen, die den Fehler verursacht hat. Es gibt mehrere Gründe, warum Deserialisierungsfehler auftreten können. Weitere Informationen zu spezifischen Deserialisierungsfehlern finden Sie unter Eingabedatenfehler. Wenn Ressourcenprotokolle nicht aktiviert sind, wird im Azure-Portal eine kurze Benachrichtigung angezeigt.
Wenn die Nutzlast der Nachricht größer als 32 KB ist oder im Binärformat vorliegt, führen Sie den CheckMalformedEvents.cs-Code aus, der im GitHub-Beispielrepository verfügbar ist. Dieser Code liest die Partitions-ID und den Offset und gibt die Daten aus dem Offset aus.
Andere häufige Gründe für Eingabedeserialisierungsfehler sind:
- Eine Integerspalte mit einem Wert größer als
9223372036854775807
. - Zeichenfolgen anstelle eines Arrays von Objekten oder durch Zeilen getrennte Objekte. Gültiges Beispiel:
*[{'a':1}]*
. Ungültiges Beispiel:*"'a' :1"*
. - Verwenden Sie ein Event Hub-Erfassungsblob im Avro-Format zum Eingeben in Ihren Auftrag.
- Vorhandensein von zwei Spalten in einem einzelnen Eingabeereignis, die sich nur hinsichtlich Groß-/Kleinschreibung unterscheiden. Beispiel:
*column1*
und*COLUMN1*
Änderungen an der Partitionsanzahl
Die Partitionsanzahl von Event Hubs kann geändert werden. Wenn die Partitionsanzahl eines Event Hubs geändert wird, müssen Sie den Stream Analytics-Auftrag beenden und neu starten.
Die folgenden Fehler werden angezeigt, wenn die Partitionsanzahl eines Event Hubs bei ausgeführten Auftrag geändert wird: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException
.
Auftrag überschreitet die maximale Anzahl von Event Hub-Empfängern
Eine bewährte Methode beim Arbeiten mit Event Hubs ist die Verwendung mehrerer Consumergruppen für die Skalierbarkeit von Aufträgen. Die Anzahl der Leser im Stream Analytics-Auftrag für eine bestimmte Eingabe wirkt sich auf die Anzahl der Leser in einer einzelnen Consumergruppe aus.
Die genaue Anzahl der Empfänger basiert auf internen Implementierungsdetails für die Logik der horizontalen Skalierungstopologie. Die Anzahl wird nicht extern verfügbar gemacht. Die Anzahl der Leser kann sich beim Start eines Auftrags oder bei Upgrades ändern.
Die folgenden Fehlermeldungen werden angezeigt, wenn die maximale Anzahl der Empfänger überschritten wird. Die Meldung enthält eine Liste vorhandener Verbindungen, die mit einer Consumergruppe mit Event Hub hergestellt wurden. Das Tag AzureStreamAnalytics
gibt an, dass die Verbindungen von einem Azure Streaming-Dienst hergestellt wurden.
The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hubs Receivers.
The following information may be helpful in identifying the connected receivers: Exceeded the maximum number of allowed receivers per partition in a consumer group which is 5. List of connected receivers –
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1.
Hinweis
Wenn sich die Anzahl der Leser während der Aktualisierung des Auftrags ändert, werden Warnungen zu vorübergehenden Problemen in Überwachungsprotokolle geschrieben. Stream Analytics-Aufträge werden automatisch von diesen vorübergehenden Problemen behoben.
Führen Sie die folgenden Schritte aus, um Ihrer Event Hubs-Instanz eine neue Consumergruppe hinzuzufügen:
Melden Sie sich beim Azure-Portal an.
Suchen Sie nach Ihrer Event Hub-Instanz.
Wählen Sie unter der Überschrift Entitäten den Eintrag Event Hubs aus.
Wählen Sie den Event Hub anhand des Namens aus.
Wählen Sie auf der Seite Event Hubs-Instanz unter der Überschrift Entitäten den Eintrag Consumergruppen aus. Es wird eine Consumergruppe mit dem Namen $Default aufgelistet.
Wählen Sie + Consumergruppe aus, um eine neue Consumergruppe hinzuzufügen.
Als Sie die Eingabe im Stream Analytics-Auftrag erstellt haben, um auf den Event Hub zu verweisen, haben Sie dort die Consumergruppe angegeben. Event Hubs verwendet $Default, wenn keine Consumergruppe angegeben ist. Bearbeiten Sie nach der Erstellung einer Consumergruppe die Event Hub-Eingabe im Stream Analytics-Auftrag, und geben Sie den Namen der neuen Consumergruppe an.
Anzahl der Leser pro Partition überschreitet den Event Hubs-Grenzwert
Wenn Ihre Streamingabfragesyntax mehrmals auf die gleiche Ressource für Event Hub-Eingabe verweist, kann das Auftragsmodul mehrere Leser pro Abfrage aus derselben Consumergruppe verwenden. Wenn es zu viele Verweise auf dieselbe Consumergruppe gibt, kann der Auftrag den Grenzwert 5 überschreiten und einen Fehler auslösen. In diesen Fällen können Sie eine weitere Unterteilung vornehmen, indem Sie mehrere Eingaben für mehrere Consumergruppen verwenden.
Szenarien, in denen die Anzahl der Leser pro Partition den Event Hubs-Grenzwert 5 überschreitet:
Mehrere
SELECT
-Anweisungen: Bei Verwendung mehrererSELECT
-Anweisungen, die auf die gleiche Event Hub-Eingabe verweisen, bewirkt jedeSELECT
-Anweisung, dass ein neuer Empfänger erstellt wird.UNION
: Wenn SieUNION
verwenden, es ist möglich, dass mehrere Eingaben auf den gleichen Event Hub und die gleiche Consumergruppe verweisen.SELF JOIN
: Wenn Sie einenSELF JOIN
-Vorgang verwenden, es ist möglich, dass auf den gleichen Event Hub mehrmals verwiesen wird.
Es folgen bewährte Methoden zum Vermeiden von Szenarien, in denen die Anzahl der Leser pro Partition den Event Hubs-Grenzwert 5 überschreitet.
Unterteilen der Abfrage mithilfe einer WITH-Klausel in mehrere Schritte
Die WITH
-Klausel gibt ein temporäres benanntes Resultset an, auf eine FROM
-Klausel in der Abfrage verweisen kann. Sie definieren die WITH
-Klausel im Ausführungsbereich einer einzelnen SELECT
-Anweisung.
Verwenden Sie beispielsweise anstelle dieser Abfrage:
SELECT foo
INTO output1
FROM inputEventHub
SELECT bar
INTO output2
FROM inputEventHub
…
Diese Abfrage:
WITH data AS (
SELECT * FROM inputEventHub
)
SELECT foo
INTO output1
FROM data
SELECT bar
INTO output2
FROM data
…
Sicherstellen, dass Eingaben an verschiedene Consumergruppen gebunden werden
Erstellen Sie für Abfragen, bei denen drei oder mehr Eingaben mit der gleichen Event Hubs-Consumergruppe verbunden sind, separate Consumergruppen. Für diese Aufgabe ist die Erstellung zusätzlicher Stream Analytics-Eingaben erforderlich.
Erstellen separater Eingaben mit unterschiedlichen Consumergruppen
Sie können separate Eingaben mit unterschiedlichen Consumergruppen für denselben Event Hub erstellen. Im folgenden Beispiel einer UNION
-Abfrage, verweisen InputOne und InputTwo auf dieselbe Event Hub-Quelle. Alle Abfragen können separate Eingaben mit unterschiedlichen Consumergruppen enthalten. Die UNION
-Abfrage ist nur ein Beispiel.
WITH
DataOne AS
(
SELECT * FROM InputOne
),
DataTwo AS
(
SELECT * FROM InputTwo
),
SELECT foo FROM DataOne
UNION
SELECT foo FROM DataTwo
Anzahl der Leser pro Partition überschreitet das IoT Hub-Limit
Stream Analytics-Aufträge verwenden den integrierten Event Hubs-kompatiblen Endpunkt in Azure IoT Hub, um Ereignisse aus IoT Hub zu verbinden und zu lesen. Wenn Ihre Leser pro Partition die Limits von IoT Hub überschreitet, können Sie die Lösungen für Event Hubs verwenden, um dies zu beheben. Sie können eine Consumergruppe für den integrierten Endpunkt über die IoT Hub-Portalendpunktsitzung oder über das IoT Hub SDK erstellen.
Hilfe erhalten
Weitere Unterstützung erhalten Sie auf der Microsoft Q&A-Seite für Azure Stream Analytics.
Nächste Schritte
- Einführung in Azure Stream Analytics
- Analysieren von betrügerischen Anrufdaten mit Stream Analytics und Visualisieren der Ergebnisse in einem Power BI-Dashboard
- Skalieren eines Azure Stream Analytics-Auftrags zur Erhöhung des Durchsatzes
- Referenz zur Azure Stream Analytics-Abfragesprache
- Azure Stream Analytics-Verwaltungs-REST-API