Partager via


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écifiez Compression 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 :

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, Metricet 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