Conexión de datos de Event Hubs (versión preliminar)
Azure Event Hubs es una plataforma de streaming de macrodatos y un servicio de ingesta de eventos. El Explorador de datos de Azure Synapse ofrece la ingesta de datos continua desde centros de eventos administrados por el cliente.
La canalización de ingesta de la instancia de Event Hubs transfiere los eventos al Explorador de datos de Azure Synapse en varios pasos. En primer lugar, se crea un Event Hubs en Azure Portal. Después, se crea una tabla de destino en el Explorador de datos de Azure Synapse en la que se realizará la ingesta de datos en un formato determinado mediante el uso de las propiedades de ingesta especificadas. La conexión de Event Hubs debe conocer el enrutamiento de eventos. Los datos se insertan con las propiedades seleccionadas según la asignación de propiedades del sistema de eventos. Cree una conexión a Event Hubs para crear un Event Hubs y enviar eventos. Este proceso se puede administrar desde Azure Portal, mediante programación con C# o Python o con una plantilla de Azure Resource Manager.
Para obtener información general sobre la ingesta de datos en el Explorador de datos de Azure Synapse, consulte Introducción a la ingesta de datos del Explorador de datos de Azure Synapse.
Formato de datos
Los datos se leen desde la instancia de Event Hubs en forma de objetos EventData.
Consulte los formatos admitidos.
Nota
Event Hubs no admite el formato .raw.
Los datos se pueden comprimir mediante el algoritmo de compresión
GZip
. Especifique el valor deCompression
en propiedades de la ingesta.- No se admite la compresión de datos para los formatos comprimidos (Avro, Parquet, ORC).
- No se admiten la codificación personalizada ni las propiedades del sistema insertadas para los datos comprimidos.
Propiedades de la ingesta
Las propiedades de la ingesta indican el proceso de ingesta, dónde enrutar los datos y cómo procesarlos. Puede especificar las propiedades de la ingesta de eventos mediante EventData.Properties. Puede establecer las siguientes propiedades:
Propiedad | Descripción |
---|---|
Tabla | Nombre (distingue mayúsculas de minúsculas) de la tabla de destino existente. Invalida el valor de Table establecido en el panel Data Connection . |
Formato | Formato de datos. Invalida el valor de Data format establecido en el panel Data Connection . |
IngestionMappingReference | Nombre de la asignación de ingesta existente que se va a usar. Invalida el valor de Column mapping establecido en el panel Data Connection . |
Compresión | Compresión de datos, None (predeterminado) o compresión GZip . |
Encoding | Codificación de datos, el valor predeterminado es UTF8. Puede ser cualquiera de las codificaciones compatibles con .NET. |
Etiquetas | Una lista de etiquetas que se asocian a los datos ingeridos, cuyo formato es una cadena de matriz JSON. Hay implicaciones de rendimiento al usar etiquetas. |
Nota
Solamente se ingieren los eventos en cola después de crear la conexión de datos.
Enrutamiento de eventos
Al configurar una conexión de Event Hubs con el clúster del Explorador de datos de Azure Synapse, se especifican las propiedades de la tabla de destino (nombre de tabla, formato de datos, compresión y asignación). El enrutamiento predeterminado de los datos también es conocido como static routing
(enrutamiento estático).
También puede especificar las propiedades de la tabla de destino para cada evento mediante las propiedades del evento. La conexión enrutará dinámicamente los datos tal y como se especifica en EventData.Properties, lo que invalida las propiedades estáticas de este evento.
En el ejemplo siguiente, se establecen los detalles de Event Hubs y se envían datos de métricas meteorológicas a la tabla WeatherMetrics
.
Los datos están en formato json
. mapping1
está predefinido en la tabla WeatherMetrics
.
Advertencia
En este ejemplo se usa la autenticación de cadena de conexión para conectarse a Event Hubs para simplificar el ejemplo. Sin embargo, la codificación rígida de una cadena de conexión en el script requiere un alto grado de confianza en la aplicación y conlleva riesgos de seguridad.
Para soluciones seguras a largo plazo, use una de estas opciones:
- Autenticación sin contraseñas
- Almacenar la cadena de conexión en Azure Key Vault y usar este método para recuperarla en el código.
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();
Asignación de propiedades del sistema de eventos
Las propiedades del sistema almacenan las propiedades establecidas por el servicio Event Hubs en el momento en el que se pone en cola el evento. La conexión con la instancia de Event Hubs del Explorador de datos de Azure Synapse insertará las propiedades seleccionadas en la carga de datos de la tabla.
Nota:
- Las propiedades del sistema son compatibles con los formatos
json
y tabulares (csv
,tsv
, etc.) pero no se admiten en datos comprimidos. Aunque se utilice un formato no admitido, los datos se ingerirán, pero se omitirán las propiedades. - En el caso de los datos tabulares, las propiedades del sistema solo se admiten para los mensajes de eventos de un solo registro.
- En el caso de los datos JSON, también se admiten las propiedades del sistema para los mensajes de eventos de varios registros. En tales casos, las propiedades del sistema solo se agregan al primer registro del mensaje de evento.
- En el caso de la asignación
csv
, las propiedades se agregan al principio del registro en el orden que se muestra en la tabla Propiedades del sistema. - Para la asignación
json
, las propiedades se agregan según los nombres de propiedad de la tabla Propiedades del sistema.
Propiedades del sistema
Event Hubs expone las siguientes propiedades del sistema:
Propiedad | Tipo de datos | Descripción |
---|---|---|
x-opt-enqueued-time | datetime | Hora UTC en la que se puso en cola el evento |
x-opt-sequence-number | long | Número de secuencia lógica del evento en el flujo de partición de la instancia de Event Hubs |
x-opt-offset | string | Desplazamiento del evento en relación con el flujo de partición de la instancia de Event Hubs. El identificador de desplazamiento es único dentro de una partición del flujo de la instancia de Event Hubs |
x-opt-publisher | string | Nombre del publicador, si el mensaje se envió a un punto de conexión del publicador |
x-opt-partition-key | string | Clave de partición de la partición correspondiente que almacenó el evento |
Si ha seleccionado Propiedades del sistema de eventos en la sección Origen de datos de la tabla, debe incluir las propiedades en el esquema de la tabla y la asignación.
Ejemplos de asignación de esquemas
Ejemplo de asignación de esquema de tabla
Si los datos incluyen tres columnas (Timespan
, Metric
y Value
) y las propiedades que incluye son x-opt-enqueued-time
y x-opt-offset
, cree o modifique el esquema de tabla mediante este comando:
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)
Ejemplo de asignación CSV
Ejecute los siguientes comandos para agregar datos al principio del registro. Observe los valores 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"}}'
']'
Ejemplo de asignación JSON
Los datos se agregan mediante la asignación de propiedades del sistema. Ejecute estos comandos:
.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"}}'
']'
Conexión de Event Hubs
Nota:
Para obtener el mejor rendimiento, cree todos los recursos en la misma región que el clúster del Explorador de datos de Azure Synapse.
Creación de una instancia de Event Hubs
Si aún no la tiene, cree una instancia de Event Hubs. La conexión a Event Hubs se puede administrar desde Azure Portal, mediante programación con C# o Python o con una plantilla de Azure Resource Manager.
Nota:
- El número de particiones no es modificable, por lo que debería tener en cuenta el escalado a largo plazo a la hora de configurar este número.
- El grupo de consumidores debe ser único por consumidor. Cree un grupo de consumidores dedicado para la conexión del Explorador de datos de Azure Synapse.
Envío de eventos
Examine la aplicación de ejemplo que genera los datos y los envía a una instancia de Event Hubs.
Para obtener un ejemplo de cómo generar datos de ejemplo, consulte Ingesta de datos de la instancia de Event Hubs en el Explorador de datos de Azure Synapse
Configuración de una solución de recuperación ante desastres geográfica
Event Hubs ofrece una solución de recuperación ante desastres geográfica.
El Explorador de datos de Azure Synapse no admite los espacios de nombres de Event Hubs con Alias
. Para implementar la recuperación ante desastres geográfica en la solución, cree dos conexiones de datos de Event Hubs: una para el espacio de nombres principal y otra para el espacio de nombres secundario. El Explorador de datos de Azure Synapse escuchará en ambas conexiones de Event Hubs.
Nota:
Es responsabilidad del usuario implementar una conmutación por error del espacio de nombres principal en el espacio de nombres secundario.
Pasos siguientes
- Ingesta de datos de Event Hubs en el Explorador de datos de Azure Synapse
- Creación de una conexión de datos de Event Hubs para el Explorador de datos de Azure Synapse con C#
- Creación de una conexión de datos de Event Hubs para el Explorador de datos de Azure Synapse con Python
- Creación de una conexión de datos de Event Hubs para el Explorador de datos de Azure Synapse mediante una plantilla de Azure Resource Manager