Ingesta de blobs en Azure Data Explorer mediante la suscripción a las notificaciones de Event Grid

El Explorador de datos de Azure es un servicio de exploración de datos altamente escalable y rápido para datos de telemetría y registro. Azure Data Explorer permite ingerir (cargar) datos procedentes de Event Hubs, IoT Hubs y blobs escritos en contenedores de blobs.

En este artículo, aprenderá a ingerir blobs desde la cuenta de almacenamiento en Azure Data Explorer mediante una conexión de datos de Event Grid. Creará una conexión de datos de Event Grid que establece una suscripción de Azure Event Grid. La suscripción de Event Grid enruta los eventos desde la cuenta de almacenamiento a Azure Data Explorer mediante Azure Event Hubs. A continuación, puede ver un ejemplo del flujo de datos a lo largo de todo el sistema.

Para información general sobre la ingesta en Azure Data Explorer desde Event Grid, consulte Conexión a Event Grid. Para crear los recursos de forma manual en Azure Portal, consulte Creación manual de recursos para la ingesta de Event Grid.

Prerrequisitos

Creación de una tabla de destino en el Explorador de datos de Azure

Cree una tabla en Azure Data Explorer a la que Event Hubs enviará los datos. Cree la tabla en el clúster y la base de datos preparados en los requisitos previos.

  1. En Azure Portal, bajo el clúster, seleccione Consulta.

    Vínculo al explorador de consultas.

  2. Copie el siguiente comando en la ventana y seleccione Ejecutar para crear la tabla (TestTable) que recibirá los datos ingeridos.

    .create table TestTable (TimeStamp: datetime, Value: string, Source:string)
    

    Ejecutar comando de creación de tabla.

  3. Copie el siguiente comando en la ventana y seleccione Ejecutar para asignar los datos JSON entrantes a los tipos de datos y los nombres de columna de la tabla (TestTable).

    .create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp","path":"$.TimeStamp"},{"column":"Value","path":"$.Value"},{"column":"Source","path":"$.Source"}]'
    

Creación de una conexión de datos de Event Grid

Ahora, conecte la cuenta de almacenamiento a Azure Data Explorer para que los datos que fluyen hacia el almacenamiento se transmitan también a la tabla de prueba. Esta conexión se puede crear en Azure Portal en la propia cuenta de almacenamiento, o bien en Azure Data Explorer.

  1. Vaya a la cuenta de almacenamiento en Azure Portal. En el menú de la izquierda, seleccione Eventos

  2. En el panel principal, seleccione la pestaña Azure Data Explorer.

    Captura de pantalla del acceso de la cuenta de almacenamiento de Azure Portal a la conexión de Event Grid conexión.

  3. Se abre el panel Conexión de datos con la pestaña Aspectos básicos seleccionada.

Conexión de datos: pestaña Aspectos básicos

  1. Rellene el formulario con la siguiente información:

    Captura de pantalla de la pestaña Aspectos básicos de la ingesta de Event Grid en la cuenta de almacenamiento de Azure Portal.

    Configuración Valor sugerido Descripción del campo
    Nombre de la conexión de datos test-grid-connection Nombre de la conexión que desea crear en Azure Data Explorer.
    Cuenta de almacenamiento gridteststorage1 La cuenta de almacenamiento desde la que ha accedido a este asistente. Se rellena automáticamente.
    Tipo de evento Blob creado o Blob con el nombre cambiado Tipo de evento que desencadena la ingesta. El evento Blob con el nombre cambiado solo se admite para el almacenamiento de ADLSv2. Estos son los tipos que se admiten: Microsoft.Storage.BlobCreated o Microsoft.Storage.BlobRenamed.
    Creación de recursos Automático Defina si desea que Azure Data Explorer cree una suscripción de Event Grid, un espacio de nombres de un centro de eventos y un centro de eventos automáticamente. Para crear los recursos de forma manual, consulte Creación manual de recursos para la ingesta de Event Grid.
  2. Seleccione Next Ingestion properties (Propiedades de ingesta siguiente).

Conexión de datos: pestaña Ingestion properties (Propiedades de la ingesta)

  1. Rellene el formulario con la siguiente información. Los nombres de tabla y de asignación distinguen mayúsculas de minúsculas:

    Captura de pantalla de la pestaña Ingest properties (Propiedades de la ingesta) de la ingesta de Event Grid en la cuenta de almacenamiento de Azure Portal.

    Configuración Valor sugerido Descripción del campo
    Suscripción La suscripción de Azure Data Explorer.
    Cluster Name TestCluster Nombre del clúster en que desea ingerir datos.
    Nombre de la base de datos TestDatabase Base de datos de destino que creó en TestCluster.
    Nombre de la tabla TestTable Tabla de destino que creó en TestDatabase.
    Formato de datos JSON Los formatos admitidos son Avro, CSV, JSON, MULTILINE JSON, ORC, PARQUET, PSV, SCSV, SOHSV, TSV, TXT, TSVE, APACHEAVRO, RAW y W3CLOG. Las opciones de compresión admitidas son Zip y Gzip.
    Asignación TestMapping La asignación que creó en TestDatabase, que asigna los datos JSON entrantes a los nombres de columnas y tipos de datos de TestTable.
    Configuración avanzada Mis datos tienen encabezados Ignora los encabezados. Se admite para archivos de tipo *SV.

    Nota

    No es necesario especificar todos los valores de configuración de enrutamiento predeterminados. También se aceptan configuraciones parciales.

  2. Seleccione Siguiente: Revisar y crear.

Conexión de datos: pestaña Revisar y crear

  1. Revise los recursos que se crearon automáticamente y seleccione Crear.

    Captura de pantalla de la pestaña Revisar y crear de la ingesta de Event Grid en la cuenta de almacenamiento de Azure Portal.

Implementación

Espere hasta que se complete la implementación. Si se produce un error en la implementación, seleccione Detalles de la operación junto a la fase con errores para más información sobre el motivo del error. Seleccione Volver a implementar para intentar implementar los recursos de nuevo. Puede modificar los parámetros antes de la implementación.

Implementar recursos de Event Grid.

Generación de datos de ejemplo

Ahora que Azure Data Explorer y la cuenta de almacenamiento están conectados, puede crear datos de ejemplo.

Carga de un blob en el contenedor de almacenamiento

Vamos a trabajar con un pequeño script de shell que emite algunos comandos básicos de la CLI de Azure para interactuar con recursos de Azure Storage. El script hace las siguientes acciones:

  1. Crea un contenedor nuevo en su cuenta de almacenamiento.
  2. Carga un archivo existente (en forma de blob) en ese contenedor.
  3. Enumera los blobs del contenedor.

Puede usar Azure Cloud Shell para ejecutar el script directamente en el portal.

Guarde los datos en un archivo y cárguelo con este script:

{"TimeStamp": "1987-11-16 12:00","Value": "Hello World","Source": "TestSource"}
#!/bin/bash
### A simple Azure Storage example script

    export AZURE_STORAGE_ACCOUNT=<storage_account_name>
    export AZURE_STORAGE_KEY=<storage_account_key>

    export container_name=<container_name>
    export blob_name=<blob_name>
    export file_to_upload=<file_to_upload>
    export destination_file=<destination_file>

    echo "Creating the container..."
    az storage container create --name $container_name

    echo "Uploading the file..."
    az storage blob upload --container-name $container_name --file $file_to_upload --name $blob_name --metadata "rawSizeBytes=1024"

    echo "Listing the blobs..."
    az storage blob list --container-name $container_name --output table

    echo "Done"

Nota

Para lograr el mejor rendimiento de la ingesta, se deben comunicar los tamaño sin comprimir de los blobs comprimidos enviados para la ingesta. Dado que las notificaciones de Event Grid solo contienen detalles básicos, debe comunicarse explícitamente la información de tamaño. La información de tamaño sin comprimir se puede proporcionar estableciendo la propiedad en los rawSizeBytes metadatos del blob con el rawSizeBytes comprimir en bytes.

Cambio del nombre del blob

Si va a ingerir datos desde el almacenamiento de ADLSv2 y ha definido Blob renamed (Blob con nombre cambiado) como tipo de evento para la conexión de datos, el desencadenador para la ingesta de blobs es el cambio de nombre del blob. Para cambiar el nombre de un blob, vaya al blob en Azure Portal, haga clic con el botón derecho en el blob y seleccione Cambiar nombre:

Cambio del nombre de un blob en Azure Portal.

Propiedades de la ingesta

Puede especificar las propiedades de la ingesta de blobs mediante los metadatos del blob.

Nota

Azure Data Explorer no eliminará los blobs con posterioridad a la ingesta. Conserve los blobs de tres a cinco días. Use Administración del ciclo de vida de Azure Blob Storage para administrar la eliminación de blobs.

Revisión del flujo de datos

Nota

Azure Data Explorer tiene una directiva de agregación (procesamiento por lotes) para la ingesta de datos diseñada para optimizar dicho proceso. De forma predeterminada, la directiva se configura en 5 minutos. Si es necesario, podrá modificar la directiva más adelante. En este artículo puede esperar una latencia de unos minutos.

  1. En Azure Portal, en la cuadrícula de eventos, verá el pico de actividad cuando la aplicación se está ejecutando.

    Gráfico de actividad para Event Grid.

  2. Ejecute la siguiente consulta en la base de datos de prueba para comprobar cuántos mensajes se han enviado a la base de datos hasta el momento.

    TestTable
    | count
    
  3. Para ver el contenido de los mensajes, ejecute la siguiente consulta en la base de datos de prueba.

    TestTable
    

    El conjunto de resultados debe tener un aspecto similar al de la siguiente imagen:

    Conjunto de resultados del mensaje para Event Grid.

Limpieza de recursos

Si no planea usar volver a usar Event Grid, elimine la suscripción de Event Grid, el espacio de nombres de Event Hubs y Event Hubs, que se crearon automáticamente, con el fin de no incurrir en costos no deseados.

  1. En Azure Portal, vaya al menú de la izquierda y seleccione Todos los recursos.

    Seleccione todos los recursos para la limpieza de Event Grid.

  2. Busque el espacio de nombres de Event Hubs y seleccione Eliminar para eliminarlo:

    Eliminar espacio de nombres de Event Hubs.

  3. En el formulario Eliminar recursos, confirme la eliminación del espacio de nombres y los recursos de Event Hubs.

  4. Vaya a la cuenta de almacenamiento. En el menú de la izquierda, seleccione Eventos:

    Seleccionar los eventos que desea eliminar de Event Grid.

  5. Debajo del gráfico, seleccione la suscripción de Event Grid y, a continuación, seleccione Eliminar para eliminarla:

    Eliminar suscripción de Event Grid.

  6. Para eliminar la conexión de datos de Event Grid, vaya al clúster de Azure Data Explorer. En el menú de la izquierda, seleccione Bases de datos.

  7. Seleccione la base de datos TestDatabase:

    Seleccionar la base de datos para limpiar los recursos.

  8. En el menú izquierdo, seleccione Ingesta de datos:

    Seleccionar ingesta de datos para eliminar los recursos.

  9. Seleccione la conexión de datos test-grid-connection y, a continuación, seleccione Eliminar para eliminarla.

Pasos siguientes