Résoudre les problèmes liés aux connexions d’entrée

Cet article décrit les problèmes courants liés aux connexions d’entrée Azure Stream Analytics, comment résoudre ces problèmes et comment les corriger.

De nombreuses étapes de résolution des problèmes vous obligent à activer les journaux de ressources pour votre tâche Stream Analytics. Si vous n’avez pas activé les journaux de ressources, consultez Résoudre les problèmes d’Azure Stream Analytics à l’aide des journaux de ressources.

La tâche ne reçoit pas d’événements d’entrée

  1. Vérifiez votre connectivité aux entrées et sorties. Utilisez le bouton Tester la connexion pour chaque entrée et sortie.

  2. Examinez vos données d’entrée :

    1. Utilisez le bouton Exemples de données pour chaque entrée. Télécharger les exemples de données d’entrée.

    2. Examinez l’exemple de données afin de comprendre le schéma et les types de données.

    3. Vérifiez métriques Azure Event Hubs pour vous assurer que les événements sont envoyés. Les métriques de message doivent être supérieures à zéro si Event Hubs reçoit des messages.

  3. Vérifiez que vous avez sélectionné un intervalle de temps dans l’aperçu d’entrée. Sélectionnez Choisir un intervalle de temps, puis entrez une durée d’exemple avant de tester votre requête.

Important

Pour les tâches Azure Stream Analytics qui ne sont pas injectés sur le réseau, ne reposez pas sur l’adresse IP source des connexions provenant de Stream Analytics de quelque manière que ce soit. Elles peuvent être des adresses IP publiques ou privées, en fonction des opérations d’infrastructure de service qui se produisent de temps à autre.

Les événements d’entrée mal formés provoquent des erreurs de désérialisation

Des problèmes de désérialisation se produisent lorsque le flux d’entrée de votre travail Stream Analytics contient des messages mal formés. Par exemple, une parenthèse ou une accolades manquantes dans un objet JSON, ou un format d’horodatage incorrect dans le champ d’heure, peut entraîner un message mal formé.

Quand un travail Stream Analytics reçoit un message incorrectement formé d’une entrée, il dépose le message et vous envoie un avertissement. Un symbole d’avertissement s’affiche sur la vignette Entrées de votre tâche Stream Analytics. Le symbole d’avertissement existe tant que la tâche est dans un état d’exécution.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

Activez les journaux des ressources pour afficher les détails de l’erreur et le message (charge utile) qui a provoqué l’erreur. Il existe plusieurs raisons pour lesquelles des erreurs de désérialisation peuvent se produire. Pour plus d’informations sur les erreurs de désérialisation spécifiques, consultez erreurs de données d’entrée. Si les journaux des ressources ne sont pas activés, une brève notification s’affiche dans le portail Azure.

Screenshot that shows a warning notification about input details.

Si la charge utile du message est supérieure à 32 Ko ou est au format binaire, exécutez le code CheckMalformedEvents.cs disponible dans le référentiel d’exemples GitHub. Ce code lit le décalage de l’ID de partition et imprime les données situées dans ce décalage.

D’autres raisons courantes pour les erreurs de désérialisation d’entrée sont les suivantes :

  • Colonne entière dont la valeur est supérieure à 9223372036854775807.
  • Chaînes au lieu d’un tableau d’objets ou d’objets séparés par des lignes. Exemple valide : *[{'a':1}]*. Exemple non valide : *"'a' :1"*.
  • Utilisation d’un objet blob de capture Event Hubs au format Avro comme entrée dans votre tâche.
  • Avoir deux colonnes dans un événement d’entrée unique qui diffèrent uniquement par la casse. Exemple : *column1* et *COLUMN1*.

Modifications du nombre de partitions

Le nombre de partitions des hubs d’événements peut être modifié. Si le nombre de partitions d’un event hub est modifié, vous devez arrêter et redémarrer la tâche Stream Analytics.

L’erreur suivante s’affiche lorsque le nombre de partitions d’un event hub est modifié pendant l’exécution de la tâche : Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException.

La tâche dépasse le nombre maximal de récepteurs Event Hubs

Une meilleure pratique concernant l’utilisation d’Event Hubs consiste à utiliser plusieurs groupes de consommateurs pour assurer l’extensibilité du travail. Le nombre de lecteurs dans le travail Stream Analytics pour une entrée spécifique affecte le nombre de lecteurs dans un groupe de consommateurs donné.

Le nombre précis de destinataires repose sur les détails d’implémentation interne de la logique de la topologie d’augmentation de la taille des instances. Le nombre n’est pas exposé en externe. Le nombre de lecteurs peut changer lorsqu’une tâche est démarrée ou mise à niveau.

Le message d’erreur suivant s’affiche lorsque le nombre de récepteurs dépasse le maximum. Le message inclut une liste des connexions existantes établies à Event Hubs sous un groupe de consommateurs. La balise AzureStreamAnalytics indique que les connexions proviennent d’un service de streaming Azure.

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.

Remarque

Lorsque le nombre de lecteurs change lors des mises à niveau du travail, des avertissements temporaires sont journalisés dans des journaux d’audit. Les tâches Stream Analytics récupèrent automatiquement à partir de ces problèmes temporaires.

Pour ajouter un nouveau groupe de consommateurs dans votre instance Event Hubs, procédez comme suit :

  1. Connectez-vous au portail Azure.

  2. Localisez votre event hub.

  3. Sous le titre Entités, sélectionnez Event Hubs.

  4. Sélectionnez le nom du Event Hub.

  5. Dans la page Instance Event Hubs, sous le titre Entités, sélectionnez Groupes de consommateurs. Un groupe de consommateurs portant le nom $Default est répertorié.

  6. Sélectionnez + Groupe de consommateurs pour ajouter un nouveau groupe de consommateurs.

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

  7. Lorsque vous avez créé l’entrée dans la tâche Stream Analytics pour pointer vers l’event hub, vous avez spécifié le groupe de consommateurs là-bas. Event Hubs utilise $Default si aucun groupe de consommateurs n’est spécifié. Après avoir créé un groupe de consommateurs, modifiez l’entrée du event hub dans le travail Stream Analytics et spécifiez le nom du nouveau groupe de consommateurs.

Les lecteurs par partition dépassent la limite Event Hubs

Si votre syntaxe de requête de diffusion en continu fait référence à la même ressource pour l’entrée event hub plusieurs fois, le moteur de tâche peut utiliser plusieurs lecteurs par requête à partir de ce même groupe de consommateurs. Lorsqu’il existe trop de références au même groupe de consommateurs, le travail peut dépasser la limite de cinq et lever une erreur. Dans ces circonstances, vous pouvez diviser davantage en utilisant plusieurs entrées entre plusieurs groupes de consommateurs.

Les scénarios dans lesquels le nombre de lecteurs par partition dépasse la limite Event Hubs de cinq sont les suivants :

  • Instructions SELECT multiples : si vous utilisez plusieurs instructions SELECT qui font référence au même entrée de hub d’événements, chaque SELECTinstruction provoque la création d’un nouveau récepteur.

  • UNION: lorsque vous utilisez UNION, il est possible d’avoir plusieurs entrées qui font référence au même event hub et groupe de consommateurs.

  • SELF JOIN: lorsque vous utilisez une opération de SELF JOIN, il est possible de faire référence à la même event hub plusieurs fois.

Les meilleures pratiques suivantes peuvent aider à atténuer les scénarios dans lesquels le nombre de lecteurs par partition dépasse la limite de 5 dans Event Hubs.

Fractionner votre requête en plusieurs étapes à l’aide d’une clause WITH

La clause WITH spécifie un jeu de résultats nommé temporaire qu’une clause FROM dans la requête peut référencer. Vous définissez la clause WITH dans l’étendue d’exécution d’une instruction SELECT unique.

Par exemple, au lieu de cette requête :

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

Utilisez cette requête :

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

Vérifiez que les entrées sont liées à différents groupes de consommateurs.

Pour les requêtes dans lesquelles au moins trois entrées sont connectées au même groupe de consommateurs Event Hubs, créez des groupes de consommateurs distincts. Cette tâche nécessite la création d’entrées Stream Analytics supplémentaires.

Créer des entrées distinctes avec différents groupes de consommateurs

Vous pouvez créer des entrées distinctes avec différents groupes de consommateurs pour le même event hub. Dans l’exemple suivant d’une requête UNION, InputOne et InputTwo faire référence à la même source Event Hubs. Toute requête peut avoir des entrées distinctes avec différents groupes de consommateurs. La requête UNION n’est qu’un seul exemple.

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

Les lecteurs par partition dépassent la limite IoT Hub

Les tâches Stream Analytics utilisent le point de terminaison intégré compatible Event Hubs dans Azure IoT Hub pour se connecter et lire des événements à partir d’IoT Hub. Si vos lecteurs par partition dépassent les limites d’IoT Hub, vous pouvez utiliser les solutions pour Event Hubs pour la résoudre. Vous pouvez créer un groupe de consommateurs pour le point de terminaison intégré via la session de point de terminaison du portail IoT Hub ou via le kit de développement logiciel (SDK) IoT Hub .

Obtenir de l’aide

Pour obtenir de l’aide supplémentaire, essayez la page Q&A Microsoft pour Azure Stream Analytics.

Étapes suivantes