Event Hubs à partir d’Azure Stream Analytics
Le service Azure Event Hubs est un ingesteur d’événements de publication/abonnement hautement évolutif. Il peut collecter des millions d’événements par seconde. Un hub d’événements peut être utilisé en tant que sortie lorsque la sortie d’un travail Stream Analytics correspond à l’entrée d’un autre travail de diffusion en continu. Pour obtenir des informations sur la taille de message maximale et sur l’optimisation de la taille de lot, consultez la section taille de lot de sortie.
Configuration de la sortie
La table suivante a les paramètres nécessaires pour configurer des flux de données à partir d’Event Hubs en tant que sortie.
Nom de la propriété | Description |
---|---|
Alias de sortie | Nom convivial utilisé dans les requêtes pour diriger la sortie de requête vers cet Event Hub. |
Espace de noms du hub d’événements | Conteneur pour un ensemble d’entités de messagerie. En créant un Event Hub, vous avez également créé un espace de noms Event Hub. |
Nom du hub d’événements | Nom de votre sortie Event Hub. |
Nom de la stratégie du hub d’événements | Stratégie d’accès partagé que vous pouvez créer dans l’onglet Configurer de l’Event Hub. Chaque stratégie d’accès partagé a un nom, les autorisations que vous définissez ainsi que des clés d’accès. |
Clé de la stratégie du Event Hub | Clé d’accès partagé utilisée pour authentifier l’accès à l’espace de noms Event Hub. |
Colonne de clé de partition | facultatif. Colonne qui contient la clé de partition pour la sortie Event Hub. |
Format de sérialisation de l’événement | Format de sérialisation pour les données de sortie. JSON, CSV et Avro sont pris en charge. |
Encodage | Pour CSV et JSON, UTF-8 est le seul format d’encodage actuellement pris en charge. |
Délimiteur | Applicable uniquement pour la sérialisation CSV. Stream Analytics prend en charge un certain nombre de délimiteurs communs pour sérialiser des données dans un format CSV. Valeurs prises en charge : virgule, point-virgule, espace, tabulation et barre verticale. |
Format | Applicable uniquement pour la sérialisation JSON. L’expression Séparé par une ligne indique que la sortie est mise en forme de sorte que tous les objets JSON soient séparés par une nouvelle ligne. Si vous sélectionnez Séparé par une ligne, le JSON est lu un objet à la fois. Le contenu entier seul ne serait pas un JSON valide. Le terme Tableau indique que la sortie est mise en forme en tant que tableau d’objets JSON. |
Colonnes de propriété | facultatif. Colonnes séparées par des virgules qui doivent être jointes en tant que propriétés de l’utilisateur du message sortant au lieu de la charge utile. Vous trouverez plus d’informations sur cette fonctionnalité dans la section Propriétés de métadonnées personnalisées pour la sortie. |
Partitionnement
Le partitionnement varie en fonction de l’alignement des partitions. Lorsque la clé de partition de la sortie Event Hub s’aligne parfaitement avec l’étape de requête (précédente) en amont, le nombre d’enregistreurs est égal au nombre de partitions dans la sortie Event Hub. Chaque enregistreur utilise la classe EventHubSender pour envoyer des événements à la partition concernée. Lorsque la clé de partition de la sortie Event Hub ne s’aligne pas avec l’étape de requête (précédente) en amont, le nombre d’enregistreurs est égal au nombre de partitions de cette précédente étape. Chaque enregistreur utilise la classe SendBatchAsync dans EventHubClient pour envoyer des événements à toutes les partitions de sortie.
Taille de lot de sortie
La taille maximale du message est de 256 Ko ou 1 Mo par message. Pour plus d'informations, consultez les limites Event Hubs. Lorsque le partitionnement entrée/sortie ne s’aligne pas, chaque événement est empaqueté individuellement dans EventData
et envoyé dans un lot dans la limite de la taille de message maximale. Cela se produit également si les propriétés de métadonnées personnalisées sont utilisées. Lorsque le partitionnement entrée/sortie est aligné, plusieurs événements sont empaquetés dans une seule instance EventData
, dans la limite de la taille de message maximale, et envoyés.
Propriétés de métadonnées personnalisées pour la sortie
Vous pouvez joindre des colonnes de requête en tant que propriétés de l’utilisateur aux messages sortants. Ces colonnes ne font pas partie de la charge utile. Les propriétés sont présentes sous la forme d’un dictionnaire sur le message de sortie. Clé est le nom de colonne et valeur est la valeur de la colonne dans le dictionnaire de propriétés. Tous les types de données Stream Analytics sont pris en charge à l’exception des enregistrements et des tableaux.
Dans l’exemple suivant, les champs DeviceId
et DeviceStatus
sont ajoutés aux métadonnées.
Utilisez la requête suivante :
select *, DeviceId, DeviceStatus from iotHubInput
Configurez
DeviceId,DeviceStatus
comme colonnes de propriété dans la sortie.
L’illustration suivante présente les propriétés de message de sortie attendues qui sont inspectées dans un Event Hub à l’aide de Service Bus Explorer.
Exactement une remise
La remise exactement une fois est prise en charge dans la sortie Event Hubs par défaut. Quelle que soit votre entrée, Stream Analytics garantit aucune perte de données ou aucun doublon dans la sortie Event Hubs, entre les redémarrages initiés par l’utilisateur à partir de l’heure de la dernière sortie, empêchant ainsi la production de doublons. Cela simplifie considérablement la pipeline de streaming en n’ayant pas à surveiller, implémenter et à dépanner la logique de déduplication.