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é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
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
, 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 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
- Ingérer des données d’Event Hub dans l’explorateur de données Azure Synapse
- Créer une connexion de données Event Hub pour l’explorateur de données Azure Synapse à l’aide du langage C#
- Créer une connexion de données Event Hub pour l’explorateur de données Azure Synapse à l’aide du langage Python
- Créer une connexion de données Event Hub pour l’explorateur de données Azure Synapse à l’aide d’un modèle Azure Resource Manager