Connexion de données Event Hubs (préversion)
Azure Event Hubs est une plateforme de streaming de Big Data et un service d’ingestion d’événements. L’explorateur de données Azure Synapse offre une ingestion continue à partir de la plateforme Event Hubs gérée par le client.
Le pipeline d’ingestion Event Hubs transfère les événements à Azure Synapse Data Explorer en plusieurs étapes. Vous créez d’abord une instance Event Hubs dans le portail Azure. Vous créez ensuite une table cible dans l’explorateur de données Azure Synapse, dans laquelle les données d’un format particulier sont ingérées à l’aide des propriétés d’ingestion indiquées. La connexion Event Hubs doit connaître le routage des événements. Les données sont incorporées avec les propriétés sélectionnées en fonction du mappage des propriétés du système d’événements. Créez une connexion à Event Hubs pour créer une instance Event Hubs et envoyer des événements. Ce processus peut être géré par le biais du portail Azure, programmatiquement avec C# ou Python, ou avec le modèle Azure Resource Manager.
Pour obtenir des informations générales sur l’ingestion de données dans l’explorateur de données Azure Synapse, consultez Vue d’ensemble de l’ingestion des données dans l’explorateur de données Azure Synapse.
Format de données
Les données sont lues dans l’instance Event Hubs sous forme d’objets EventData.
Examinez les formats pris en charge.
Notes
Event Hub ne prend pas en charge le format .raw.
Les données peuvent être compressées en utilisant l’algorithme de compression
GZip
. SpécifiezCompression
dans les propriétés d’ingestion.- La compression des données n’est pas prise en charge pour les formats compressés (Avro, Parquet, ORC).
- L’encodage personnalisé et les propriétés système incorporées ne sont pas pris en charge sur les données compressées.
Propriétés d’ingestion
Les propriétés d’ingestion déterminent le processus d’ingestion, où router les données et comment les traiter. Vous pouvez spécifier les propriétés d’ingestion de l’ingestion des événements avec EventData.Properties. Vous pouvez définir les propriétés suivantes :
Propriété | Description |
---|---|
Table de charge de travail | Nom (sensible à la casse) de la table cible existante. Remplace le paramètre Table défini dans le volet Data Connection . |
Format | Format de données. Remplace le paramètre Data format défini dans le volet Data Connection . |
IngestionMappingReference | Nom du mappage d’ingestion existant à utiliser. Remplace le paramètre Column mapping défini dans le volet Data Connection . |
Compression | Compression de données, None (par défaut) ou compression GZip . |
Encodage | Encodage des données, la valeur par défaut est UTF8. Il peut s’agir de l’un des encodages pris en charge par .NET. |
Étiquettes | Liste d’étiquettes à associer aux données ingérées, sous forme de chaîne de tableau JSON. L’utilisation d’étiquettes a des répercussions sur les performances. |
Notes
Seuls les événements mis en file d’attente après que vous avez créé la connexion de données sont ingérés.
Routage d’événements
Quand vous configurez une connexion Event Hubs au cluster Azure Synapse Data Explorer, vous spécifiez les propriétés de la table cible (nom de la table, format des données, compression et mappage). Le routage par défaut pour vos données est également appelé static routing
.
Vous pouvez également spécifier des propriétés de la table cible pour chaque événement, à l’aide des propriétés d’événement. La connexion route dynamiquement les données comme spécifié dans EventData.Properties, en remplaçant les propriétés statiques de cet événement.
Dans l’exemple suivant, définissez les détails de l’instance Event Hubs et envoyez les données de mesures météorologiques à la table WeatherMetrics
.
Les données sont au format json
. mapping1
est prédéfini sur la table WeatherMetrics
.
Avertissement
Pour des raisons de simplicité, cet exemple utilise l’authentification par chaîne de connexion pour se connecter à Event Hubs. Cependant, le codage en dur d’une chaîne de connexion dans votre script nécessite un niveau de confiance très élevé dans l’application et présente des risques de sécurité.
Pour des solutions sécurisées à long terme, utilisez une de ces options :
- Authentification sans mot de passe
- Stockez votre chaîne de connexion dans un coffre Azure Key Vault et utilisez cette méthode pour la récupérer dans votre code.
var eventHubNamespaceConnectionString=<connection_string>;
var eventHubName=<event_hub>;
// Create the data
var metric = new Metric { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 };
var data = JsonConvert.SerializeObject(metric);
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(data));
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['mydatatag']");
// Send events
var eventHubClient = EventHubClient.CreateFromConnectionString(eventHubNamespaceConnectionString, eventHubName);
eventHubClient.Send(eventData);
eventHubClient.Close();
Mappage des propriétés du système d’événements
Les propriétés système stockent des propriétés définies par le service Event Hubs, au moment de la mise en file d’attente de l’événement. La connexion Event Hubs à Azure Synapse Data Explorer va incorporer les propriétés sélectionnées dans les données arrivant dans votre table.
Remarque
- Les propriétés système sont prises en charge pour les formats
json
et tabulaires (csv
,tsv
, etc.), mais pas sur les données compressées. Quand vous utilisez un format non pris en charge, les données sont toujours ingérées, mais les propriétés sont ignorées. - Pour les données tabulaires, les propriétés système sont prises en charge uniquement pour les messages d’événements à enregistrement unique.
- Pour les données JSON, les propriétés système sont également prises en charge pour les messages d’événements à enregistrements multiples. Dans ce cas, les propriétés système sont ajoutées uniquement au premier enregistrement du message d’événement.
- Pour un mappage
csv
, des propriétés sont ajoutées au début de l’enregistrement dans l’ordre indiqué dans la table Propriétés système. - Pour un mappage
json
, des propriétés sont ajoutées en fonction des noms de propriété dans la table Propriétés système.
Propriétés système
Event Hubs expose les propriétés système suivantes :
Propriété | Type de données | Description |
---|---|---|
x-opt-enqueued-time | DATETIME | Heure UTC à laquelle l’événement a été mis en file d’attente |
x-opt-sequence-number | long | Le numéro de séquence logique de l’événement dans le flux de la partition de l’instance Event Hubs |
x-opt-offset | string | Le décalage de l’événement par rapport au flux de la partition de l’instance Event Hubs. L’identificateur du décalage est unique au sein d’une partition du flux Event Hubs. |
x-opt-publisher | string | Nom de l’éditeur, si le message a été envoyé à un point de terminaison d’éditeur |
x-opt-partition-key | string | Clé de partition de la partition correspondante qui a stocké l’événement |
Si vous avez sélectionné Propriétés du système d’événements dans la section Source de données de la table, vous devez inclure les propriétés dans le schéma et le mappage de table.
Exemples de mappage de schéma
Exemple de mappage de schéma de table
Si vos données comprennent trois colonnes (Timespan
, Metric
et Value
) et que les propriétés que vous incluez sont x-opt-enqueued-time
et x-opt-offset
, créez ou modifiez le schéma de table à l’aide de la commande suivante :
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)
Exemple de mappage CSV
Exécutez les commandes suivantes pour ajouter des données au début de l’enregistrement. Notez les valeurs ordinales.
.create table TestTable ingestion csv mapping "CsvMapping1"
'['
' { "column" : "Timespan", "Properties":{"Ordinal":"2"}},'
' { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
' { "column" : "Value", "Properties":{"Ordinal":"4"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
' { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
']'
Exemple de mappage JSON
Les données sont ajoutées à l’aide du mappage des propriétés système. Exécutez les commandes suivantes :
.create table TestTable ingestion json mapping "JsonMapping1"
'['
' { "column" : "Timespan", "Properties":{"Path":"$.timestamp"}},'
' { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
' { "column" : "Value", "Properties":{"Path":"$.value"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
' { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
']'
Connexion Event Hubs
Remarque
Pour des performances optimales, créez toutes les ressources dans la même région que le cluster de l’explorateur de données Azure Synapse.
Créer une instance Event Hubs
Si vous n’en avez pas déjà une, créez une instance Event Hubs. La connexion à Event Hubs peut être gérée via le portail Azure, par programmation avec C# ou Python, ou avec le modèle Azure Resource Manager.
Remarque
- Le nombre de partitions n’est pas modifiable. Lorsque vous le définissez, tenez compte de la mise à l’échelle sur le long terme.
- Le groupe de consommateurs doit être unique par consommateur. Créez un groupe de consommateurs dédié à la connexion de l’explorateur de données Azure Synapse.
Envoyer des événements
Consultez l’exemple d’application qui génère des données et les envoie à une instance Event Hubs.
Pour obtenir un exemple de la façon de générer des exemples de données, consultez Ingérer des données provenant d’Event Hubs dans Azure Synapse Data Explorer.
Configurer une solution de géo-reprise d’activité après sinistre
Event Hubs offre une solution de géo-reprise d’activité après sinistre.
Azure Synapse Data Explorer ne prend pas en charge les espaces de noms Event Hubs de type Alias
. Pour implémenter la géo-reprise d’activité après sinistre dans votre solution, créez deux connexions de données Event Hubs : une pour l’espace de noms principal et une pour l’espace de noms secondaire. Azure Synapse Data Explorer va écouter sur les deux connexions Event Hubs.
Remarque
Il est de la responsabilité de l’utilisateur d’implémenter un basculement entre l’espace de noms principal et l’espace de noms secondaire.
Étapes suivantes
- Ingérer des données provenant d’Event Hubs dans Azure Synapse Data Explorer
- Créer une connexion de données Event Hubs pour Azure Synapse Data Explorer en utilisant C#
- Créer une connexion de données Event Hubs pour Azure Synapse Data Explorer en utilisant Python
- Créer une connexion de données Event Hubs pour Azure Synapse Data Explorer en utilisant un modèle Azure Resource Manager