Criar uma ligação de dados dos Hubs de Eventos para o Azure Data Explorer com SDKs

O Azure Data Explorer oferece ingestão dos Hubs de Eventos, uma plataforma de transmissão em fluxo de macrodados e um serviço de ingestão de eventos. Os Hubs de Eventos podem processar milhões de eventos por segundo em tempo quase real.

Neste artigo, vai ligar a um hub de eventos e ingerir dados no Azure Data Explorer. Para obter uma descrição geral sobre como ingerir a partir dos Hubs de Eventos, veja Hubs de Eventos do Azure ligação de dados.

Para saber como criar a ligação na IU web do Azure Data Explorer, portal do Azure ou com um modelo do ARM, veja Criar uma ligação de dados dos Hubs de Eventos.

Para exemplos de código baseados em versões anteriores do SDK, veja o artigo arquivado.

Pré-requisitos

Criar uma ligação de dados do hub de eventos

Nesta secção, vai estabelecer uma ligação entre o hub de eventos e a tabela Data Explorer do Azure. Desde que esta ligação esteja implementada, os dados são transmitidos do hub de eventos para a tabela de destino. Se o hub de eventos for movido para um recurso ou subscrição diferente, terá de atualizar ou recriar a ligação.

  1. Instale o pacote Microsoft.Azure.Management.Kusto NuGet.

  2. Crie um Microsoft Entra principal de aplicação para utilizar para autenticação. Precisa do ID do diretório (inquilino), do ID da aplicação e do segredo do cliente.

  3. Execute o seguinte código.

    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);
    
    Definição Valor sugerido Descrição do campo
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxx O ID do inquilino. Também conhecido como ID de diretório.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxx O ID da subscrição que utiliza para a criação de recursos.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxx O ID de cliente da aplicação que pode aceder aos recursos no seu inquilino.
    clientSecret Marcador de PosiçãoClientSecret O segredo do cliente da aplicação que pode aceder aos recursos no seu inquilino.
    resourceGroupName testrg O nome do grupo de recursos que contém o cluster.
    clusterName mykustocluster O nome do cluster.
    databaseName mykustodatabase O nome da base de dados de destino no cluster.
    dataConnectionName myeventhubconnect O nome pretendido da sua ligação de dados.
    tableName StormEvents O nome da tabela de destino na base de dados de destino.
    mappingRuleName StormEvents_CSV_Mapping O nome do mapeamento de colunas relacionado com a tabela de destino.
    dataFormat csv O formato de dados da mensagem.
    eventHubResourceId ID do Recurso O ID de recurso do hub de eventos que contém os dados para ingestão.
    consumerGroup $Default O grupo de consumidores do seu hub de eventos.
    localização E.U.A. Central A localização do recurso de ligação de dados.
    compressão Gzip ou None O tipo de compressão de dados.
    databaseRouting Multi ou Single O encaminhamento da base de dados para a ligação. Se definir o valor como Único, a ligação de dados é encaminhada para uma única base de dados no cluster, conforme especificado na definição databaseName . Se definir o valor como Multi, pode substituir a base de dados de destino predefinida com a propriedade Ingestão de basesde dados. Para obter mais informações, veja Encaminhamento de eventos.

Remover uma ligação de dados do hub de eventos

Para remover a ligação do hub de eventos, execute o seguinte comando:

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