Compartir vía


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 de Compression 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:

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