Creación de una conexión de datos de Event Hubs para Azure Data Explorer con SDK

Azure Data Explorer ofrece ingesta desde Event Hubs, una plataforma de streaming de macrodatos y un servicio de ingesta de eventos. Event Hubs puede procesar millones de eventos por segundo prácticamente en tiempo real.

En este artículo, se conectará a un centro de eventos e ingerirá datos en Azure Data Explorer. Para obtener información general sobre la ingesta desde Event Hubs, consulte Azure Event Hubs conexión de datos.

Para aprender a crear la conexión en la interfaz de usuario web de Azure Data Explorer, Azure Portal o con una plantilla de ARM, consulte Creación de una conexión de datos de Event Hubs.

Para obtener ejemplos de código basados en versiones anteriores del SDK, consulte el artículo archivado.

Requisitos previos

Creación de una conexión de datos del centro de eventos

En esta sección, establecerá una conexión entre el centro de eventos y la tabla de Azure Data Explorer. Siempre que esta conexión esté en vigor, los datos se transmiten desde el centro de eventos a la tabla de destino. Si el centro de eventos se mueve a otro recurso o suscripción, debe actualizar o volver a crear la conexión.

  1. Instale el paquete Microsoft.Azure.Management.Kusto NuGet.

  2. Cree una entidad de seguridad de aplicación Microsoft Entra que se usará para la autenticación. Necesita el identificador de directorio (inquilino), el identificador de aplicación y el secreto de cliente.

  3. Ejecute el código siguiente:

    var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
    var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
    var clientSecret = "PlaceholderClientSecret"; //Client Secret
    var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
    var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
    var resourceManagementClient = new ArmClient(credentials, subscriptionId);
    var resourceGroupName = "testrg";
    //The cluster and database that are created as part of the Prerequisites
    var clusterName = "mykustocluster";
    var databaseName = "mykustodatabase";
    var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
    var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
    var cluster = (await resourceGroup.GetKustoClusterAsync(clusterName)).Value;
    var database = (await cluster.GetKustoDatabaseAsync(databaseName)).Value;
    var dataConnections = database.GetKustoDataConnections();
    var eventHubConnectionName = "myeventhubconnect";
    //The event hub that is created as part of the Prerequisites
    var eventHubResourceId = new ResourceIdentifier("/subscriptions/<eventHubSubscriptionId>/resourceGroups/<eventHubResourceGroupName>/providers/Microsoft.EventHub/namespaces/<eventHubNamespaceName>/eventhubs/<eventHubName>");
    var consumerGroup = "$Default";
    var location = AzureLocation.CentralUS;
    //The table and column mapping are created as part of the Prerequisites
    var tableName = "StormEvents";
    var mappingRuleName = "StormEvents_CSV_Mapping";
    var dataFormat = KustoEventHubDataFormat.Csv;
    var compression = EventHubMessagesCompressionType.None;
    var databaseRouting = KustoDatabaseRouting.Multi;
    var eventHubConnectionData = new KustoEventHubDataConnection
    {
        EventHubResourceId = eventHubResourceId, ConsumerGroup = consumerGroup,
        Location = location, TableName = tableName, MappingRuleName = mappingRuleName,
        DataFormat = dataFormat, Compression = compression, DatabaseRouting = databaseRouting
    };
    await dataConnections.CreateOrUpdateAsync(WaitUntil.Completed, eventHubConnectionName, eventHubConnectionData);
    
    Configuración Valor sugerido Descripción del campo
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx El identificador de inquilino. También conocido como identificador de directorio.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Identificador de suscripción que se usa para la creación de recursos.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Identificador del cliente de la aplicación que puede acceder a los recursos del inquilino.
    clientSecret PlaceholderClientSecret Secreto del cliente de la aplicación que puede acceder a los recursos del inquilino.
    resourceGroupName testrg Nombre del grupo de recursos que contiene el clúster.
    clusterName mykustocluster Nombre del clúster.
    databaseName mykustodatabase Nombre de la base de datos de destino del clúster.
    dataConnectionName myeventhubconnect Nombre que desea asignar a la conexión de datos.
    tableName StormEvents Nombre de la tabla de destino de la base de datos de destino.
    mappingRuleName StormEvents_CSV_Mapping Nombre de la asignación de columnas asociada a la tabla de destino.
    dataFormat csv Formato de datos del mensaje.
    eventHubResourceId Identificador del recurso Identificador del recurso del centro de eventos que contiene los datos que se van a ingerir.
    consumerGroup $Default Grupo de consumidores del centro de eventos.
    ubicación Centro de EE. UU. Ubicación del recurso de conexión de datos.
    compression Gzip o Ninguno El tipo de compresión de datos.
    databaseRouting Múltiple o Sencillo Enrutamiento de la base de datos para la conexión. Si establece el valor en Single, la conexión de datos se enruta a una base de datos única en el clúster, tal como se especifica en la configuración databaseName . Si establece el valor en Múltiple, puede invalidar la base de datos de destino predeterminada mediante la propiedad de ingestaBase de datos. Para más información, consulte Enrutamiento de eventos.

Eliminación de una conexión de datos del centro de eventos

Para quitar la conexión del centro de eventos, ejecute el siguiente comando:

kustoManagementClient.DataConnections.Delete(resourceGroupName, clusterName, databaseName, dataConnectionName);