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

  1. Überprüfen Sie Ihre Konnektivität mit Eingaben und Ausgaben. Verwenden Sie die Schaltfläche Verbindung testen für jede Eingabe und Ausgabe.

  2. Überprüfen Sie die Eingabedaten:

    1. Verwenden Sie die Schaltfläche Beispieldaten für jede Eingabe. Laden Sie die Beispieldaten für die Eingabe herunter.

    2. Untersuchen Sie die Beispieldaten, um das Schema und die Datentypen zu verstehen.

    3. Ü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.

  3. 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:

Screenshot that shows the Inputs tile for Azure Stream Analytics.

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.

Screenshot that shows a warning notification about input details.

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:

  1. Melden Sie sich beim Azure-Portal an.

  2. Suchen Sie nach Ihrer Event Hub-Instanz.

  3. Wählen Sie unter der Überschrift Entitäten den Eintrag Event Hubs aus.

  4. Wählen Sie den Event Hub anhand des Namens aus.

  5. 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.

  6. Wählen Sie + Consumergruppe aus, um eine neue Consumergruppe hinzuzufügen.

    Screenshot that shows the button for adding a consumer group in Event Hubs.

  7. 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 mehrerer SELECT-Anweisungen, die auf die gleiche Event Hub-Eingabe verweisen, bewirkt jede SELECT-Anweisung, dass ein neuer Empfänger erstellt wird.

  • UNION: Wenn Sie UNION verwenden, es ist möglich, dass mehrere Eingaben auf den gleichen Event Hub und die gleiche Consumergruppe verweisen.

  • SELF JOIN: Wenn Sie einen SELF 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