Share via


Connexion de données Event Hub (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 Hub transfère les événements à l’explorateur de données Azure Synapse en plusieurs étapes. Commencez par créer un hub d’événements 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 Hub 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 Hub pour créer un hub d’événements 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 à partir du hub d’événements 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

Lors de la configuration d’une connexion Event Hub au cluster de l’explorateur de données Azure Synapse, vous spécifiez les propriétés de la table cible (nom de table, format de 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 d’Event Hub, puis envoyez les données de métriques météorologiques à la table WeatherMetrics. Les données sont au format json. mapping1 est prédéfini sur la table WeatherMetrics.

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 les 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 Hub de l’explorateur de données Azure Synapse incorpore les propriétés sélectionnées dans les données arrivant dans votre table.

Notes

  • 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 Hub 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 Numéro de séquence logique de l’événement dans le flux de partition du hub d’événements
x-opt-offset string Décalage de l’événement par rapport au flux de partition du hub d’événements. L’identificateur de décalage est unique au sein d’une partition du flux du hub d’événements
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 au hub d’événements

Notes

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 un hub d’événements

Si vous n’avez pas d’Event Hub, créez-en un. La connexion à Event Hub peut être gérée par le biais du portail Azure, programmatiquement avec C# ou Python, ou avec le modèle Azure Resource Manager.

Notes

  • 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 à un hub d’événements.

Pour obtenir un exemple illustrant la façon de générer des exemples de données, consultez Ingérer des données d’Event Hub dans l’explorateur de données Azure Synapse.

Configurer une solution de géo-reprise d’activité après sinistre

Event Hub propose une solution de géo-reprise d’activité après sinistre. L’explorateur de données Azure Synapse ne prend pas en charge les espaces de noms Event Hub 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 Hub : une pour l’espace de noms principal et une pour l’espace de noms secondaire. L’explorateur de données Azure Synapse écoute les deux connexions Event Hub.

Notes

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