Ingerir dados do Event Hub para o Azure Data ExplorerIngest data from Event Hub into Azure Data Explorer

O Azure Data Explorer é um serviço de exploração de dados rápido e altamente dimensionável para dados telemétricos e de registo.Azure Data Explorer is a fast and highly scalable data exploration service for log and telemetry data. O Azure Data Explorer fornece ingestão (carregamento de dados) a partir dos Hubs de Eventos, uma plataforma de transmissão de macrodados e um serviço de ingestão de eventos.Azure Data Explorer offers ingestion (data loading) from Event Hubs, a big data streaming platform and event ingestion service. Os Centros de Eventos podem processar milhões de eventos por segundo em quase tempo real.Event Hubs can process millions of events per second in near real-time. Neste artigo, cria-se um centro de eventos, conecta-se a ele a partir do Azure Data Explorer e vê os dados fluírem através do sistema.In this article, you create an event hub, connect to it from Azure Data Explorer and see data flow through the system.

Pré-requisitosPrerequisites

Iniciar sessão no portal do AzureSign in to the Azure portal

Inicie sessão no portal do Azure.Sign in to the Azure portal.

Criar um hub de eventosCreate an event hub

Neste artigo, gera dados de amostra e envia-os para um centro de eventos.In this article, you generate sample data and send it to an event hub. O primeiro passo é criar um hub de eventos.The first step is to create an event hub. Pode fazê-lo através de um modelo do Azure Resource Manager no portal do Azure.You do this by using an Azure Resource Manager template in the Azure portal.

  1. Para criar um centro de eventos, utilize o seguinte botão para iniciar a implementação.To create an event hub, use the following button to start the deployment. Clique à direita e selecione Abrir em nova janela, para que possa seguir os restantes passos deste artigo.Right-click and select Open in new window, so you can follow the rest of the steps in this article.

    Implementar no AzureDeploy to Azure

    O botão Implementar no Azure leva-o para o portal do Azure para preencher um formulário de implementação.The Deploy to Azure button takes you to the Azure portal to fill out a deployment form.

    Implementar no Azure

  2. Selecione a subscrição em que quer criar o hub de eventos e crie um grupo de recursos chamado test-hub-rg.Select the subscription where you want to create the event hub, and create a resource group named test-hub-rg.

    Criar um grupo de recursos

  3. Preencha o formulário com as seguintes informações.Fill out the form with the following information.

    Formulário de implementação

    Utilize as predefinições para todas as definições não listadas na tabela seguinte.Use defaults for any settings not listed in the following table.

    DefiniçãoSetting Valor sugeridoSuggested value Descrição do campoField description
    SubscriçãoSubscription A sua subscriçãoYour subscription Selecione a subscrição do Azure que quer utilizar para o hub de eventos.Select the Azure subscription that you want to use for your event hub.
    Grupo de recursosResource group test-hub-rgtest-hub-rg Criar um novo grupo de recursos.Create a new resource group.
    LocalizaçãoLocation E.U.A. OesteWest US Selecione West US para este artigo.Select West US for this article. Para um sistema de produção, selecione a região que melhor se adequa às suas necessidades.For a production system, select the region that best meets your needs. Crie o espaço de nome do centro de eventos na mesma localização que o cluster Kusto para melhor desempenho (o mais importante para espaços de nomes de centros de eventos com alta produção).Create the event hub namespace in the same Location as the Kusto cluster for best performance (most important for event hub namespaces with high throughput).
    Nome do espaço de nomesNamespace name Um nome de espaço de nomes exclusivoA unique namespace name Escolha um nome exclusivo que identifique o seu espaço de nomes.Choose a unique name that identifies your namespace. Por exemplo, mytestnamespace.For example, mytestnamespace. O nome de domínio servicebus.windows.net é anexado ao nome que indicar.The domain name servicebus.windows.net is appended to the name you provide. O nome só pode conter letras, números e hífenes.The name can contain only letters, numbers, and hyphens. O nome tem de começar com uma letra e terminar com uma letra ou número.The name must start with a letter, and it must end with a letter or number. O valor deve ter entre 6 e 50 carateres.The value must be between 6 and 50 characters long.
    Nome do hub de eventosEvent hub name test-hubtest-hub O hub de eventos encontra-se no espaço de nomes, que fornece um contentor de âmbito exclusivo.The event hub sits under the namespace, which provides a unique scoping container. O nome do hub de eventos tem de ser exclusivo no espaço de nomes.The event hub name must be unique within the namespace.
    Nome do grupo de consumidoresConsumer group name test-grouptest-group Os grupos de consumidores permitem que cada aplicação de consumo tenha uma vista separada do fluxo de eventos.Consumer groups enable multiple consuming applications to each have a separate view of the event stream.
  4. Selecione Comprar, que reconhece que está a criar recursos na sua subscrição.Select Purchase, which acknowledges that you're creating resources in your subscription.

  5. Selecione Notificações na barra de ferramentas para monitorizar o processo de aprovisionamento.Select Notifications on the toolbar to monitor the provisioning process. Poderá demorar alguns minutos até que a implementação seja bem-sucedida, mas pode avançar para o passo seguinte agora.It might take several minutes for the deployment to succeed, but you can move on to the next step now.

    Notificações

Criar uma tabela de destino no Azure Data ExplorerCreate a target table in Azure Data Explorer

Agora, vai criar uma tabela no Azure Data Explorer, para onde os Hubs de Eventos vão enviar os dados.Now you create a table in Azure Data Explorer, to which Event Hubs will send data. Cria a tabela no cluster e na base de dados aprovisionada em Pré-requisitos.You create the table in the cluster and database provisioned in Prerequisites.

  1. No portal do Azure, navegue para o cluster e, em seguida, selecione Consulta.In the Azure portal, navigate to your cluster then select Query.

    Ligação da aplicação de consulta

  2. Copie o seguinte comando para a janela e selecione Executar para criar a tabela (TestTable) que receberá os dados ingeridos.Copy the following command into the window and select Run to create the table (TestTable) which will receive the ingested data.

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    

    Executar criação da consulta

  3. Copie o seguinte comando para a janela e selecione Executar para mapear os dados JSON de entrada para os nomes de colunas e tipos de dados da tabela (TestTable).Copy the following command into the window and select Run to map the incoming JSON data to the column names and data types of the table (TestTable).

    .create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp", "Properties": {"Path": "$.timeStamp"}},{"column":"Name", "Properties": {"Path":"$.name"}} ,{"column":"Metric", "Properties": {"Path":"$.metric"}}, {"column":"Source", "Properties": {"Path":"$.source"}}]'
    

Ligar ao hub de eventosConnect to the event hub

Agora ligue ao hub de eventos do Azure Data Explorer.Now you connect to the event hub from Azure Data Explorer. Quando esta ligação está no lugar, os dados que fluem para o hub de eventos são transmitidos para a tabela de teste que criou anteriormente neste artigo.When this connection is in place, data that flows into the event hub streams to the test table you created earlier in this article.

  1. Selecione Notificações na barra de ferramentas para verificar se a implementação do hub de eventos foi concluída com êxito.Select Notifications on the toolbar to verify that the event hub deployment was successful.

  2. No cluster que criou, selecione Bases de dados e, em seguida, TestDatabase.Under the cluster you created, select Databases then TestDatabase.

    Selecionar a base de dados de teste

  3. Selecione a ingestão de dados e adicione a ligação de dados.Select Data ingestion and Add data connection. Em seguida, preencha o formulário com as seguintes informações.Then fill out the form with the following information. Selecione Criar quando terminar.Select Create when you are finished.

    Ligação ao hub de eventos

    Fonte de dados:Data Source:

    DefiniçãoSetting Valor sugeridoSuggested value Descrição do campoField description
    Nome da ligação de dadosData connection name test-hub-connectiontest-hub-connection O nome da ligação que quer criar no Azure Data Explorer.The name of the connection you want to create in Azure Data Explorer.
    Espaço de nomes do hub de eventosEvent hub namespace Um nome de espaço de nomes exclusivoA unique namespace name O nome que escolheu anteriormente que identifica o seu espaço de nomes.The name you chose earlier that identifies your namespace.
    Hub de eventosEvent hub test-hubtest-hub O hub de eventos que criou.The event hub you created.
    Grupo de consumidoresConsumer group test-grouptest-group O grupo de consumidores definido no hub de eventos que criou.The consumer group defined in the event hub you created.
    Propriedades do sistema de eventosEvent system properties Selecione propriedades relevantesSelect relevant properties As propriedades do sistema Event Hub.The Event Hub system properties. Se houver vários registos por mensagem de evento, as propriedades do sistema serão adicionadas à primeira.If there are multiple records per event message, the system properties will be added to the first one. Ao adicionar propriedades do sistema, crie ou atualize o esquema de tabela e o mapeamento para incluir as propriedades selecionadas.When adding system properties, create or update table schema and mapping to include the selected properties.
    CompressãoCompression NenhumaNone O tipo de compressão da carga de mensagens Event Hub.The compression type of the Event Hub messages payload. Tipos de compressão suportados: Nenhum, GZip.Supported compression types: None, GZip.

    Tabela-alvo:Target table:

    Existem duas opções para encaminhar os dados ingeridos: estático e dinâmico.There are two options for routing the ingested data: static and dynamic. Para este artigo, utilize o encaminhamento estático, onde especifica o nome da tabela, formato de dados e mapeamento.For this article, you use static routing, where you specify the table name, data format, and mapping. Portanto, deixe Os meus dados incluem informações de encaminhamento não selecionados.Therefore, leave My data includes routing info unselected.

    DefiniçãoSetting Valor sugeridoSuggested value Descrição do campoField description
    TabelaTable TestTableTestTable A tabela que criou em TestDatabase.The table you created in TestDatabase.
    Formato de dadosData format JSONJSON Os formatos suportados são Avro, CSV, JSON, MULTILINE JSON, PSV, SOHSV, SCSV, TSV, TSVE, TXT, ORC e PARQUET.Supported formats are Avro, CSV, JSON, MULTILINE JSON, PSV, SOHSV, SCSV, TSV, TSVE, TXT, ORC and PARQUET.
    Mapeamento de colunasColumn mapping TestMappingTestMapping O mapeamento que criou no TestDatabase, que mapeia os dados do JSON para os nomes das colunas e tipos de dados do TestTable.The mapping you created in TestDatabase, which maps incoming JSON data to the column names and data types of TestTable. Requerido para JSON ou MULTILINE JSON, e opcional para outros formatos.Required for JSON or MULTILINE JSON, and optional for other formats.

    Nota

    • Selecione Os meus dados incluem informações de encaminhamento para utilizar o encaminhamento dinâmico, onde os seus dados incluem as informações de encaminhamento necessárias, como visto nos comentários da aplicação da amostra.Select My data includes routing info to use dynamic routing, where your data includes the necessary routing information as seen in the sample app comments. Se as propriedades estáticas e dinâmicas forem definidas, as propriedades dinâmicas sobrepõem-se às estáticas.If both static and dynamic properties are set, the dynamic properties override the static ones.
    • Apenas os eventos ensaqueidos após a criação da ligação de dados são ingeridos.Only events enqueued after you create the data connection are ingested.
    • Também pode definir o tipo de compressão através de propriedades dinâmicas, como se vê na aplicação da amostra.You can also set the compression type via dynamic properties as seen in the sample app.
    • Os formatos Avro, ORC e PARQUET, bem como as propriedades do sistema de eventos, não são suportados na carga útil de compressão GZip.Avro, ORC and PARQUET formats as well as event system properties aren't supported on GZip compression payload.

Mapeamento de propriedades do sistema de eventosEvent system properties mapping

Nota

  • As propriedades do sistema são suportadas para eventos de um único recorde.System properties are supported for single-record events.
  • Para csv mapeamento, as propriedades são adicionadas no início do registo.For csv mapping, properties are added at the beginning of the record. Para json mapeamento, as propriedades são adicionadas de acordo com o nome que aparece na lista de drop-down.For json mapping, properties are added according to the name that appears in the drop-down list.

Se selecionou propriedades do sistema de eventos na secção Fonte de Dados da tabela, deve incluir as seguintes propriedades no esquema de mesa e mapeamento.If you selected Event system properties in the Data Source section of the table, you must include the following properties in the table schema and mapping.

Exemplo de esquema de mesaTable schema example

Se os seus dadosTimespanincluirem Valuetrês colunas ( x-opt-enqueued-time e x-opt-offset Metric) e as propriedades que inclui são e, criar ou alterar o esquema da tabela utilizando este comando:If your data includes three columns (Timespan, Metric, and Value) and the properties you include are x-opt-enqueued-time and x-opt-offset, create or alter the table schema by using this command:

    .create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)

Exemplo de mapeamento CSVCSV mapping example

Executar os seguintes comandos para adicionar dados ao início do registo.Run the following commands to add data to the beginning of the record. Nota valores ordinários.Note ordinal values.

    .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"}}'
    ']'

Exemplo de mapeamento JSONJSON mapping example

Os dados são adicionados utilizando os nomes das propriedades do sistema tal como aparecem na lista de propriedades do sistema de eventos de ligação de dados.Data is added by using the system properties names as they appear in the Data connection blade Event system properties list. Execute estes comandos:Run these commands:

    .create table TestTable ingestion json mapping "JsonMapping1"
    '['
    '    { "column" : "Timespan", "Properties":{"Path":"$.timestamp"}},'
    '    { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
    '    { "column" : "Value", "Properties":{"Path":"$.metric_value"}},'
    '    { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
    '    { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
    ']'

Copiar a cadeia de ligaçãoCopy the connection string

Quando executa a aplicação de exemplo listada nos Pré-requisitos, precisa da cadeia de ligação para o espaço de nomes do hub de eventos.When you run the sample app listed in Prerequisites, you need the connection string for the event hub namespace.

  1. No espaço de nomes do hub de eventos que criou, selecione Políticas de acesso partilhado e, em seguida, RootManageSharedAccessKey.Under the event hub namespace you created, select Shared access policies, then RootManageSharedAccessKey.

    Políticas de acesso partilhado

  2. Cadeia de ligação de cópia - chave primária.Copy Connection string - primary key. Cole na próxima secção.You paste it in the next section.

    Cadeia de ligação

Gerar dados de exemploGenerate sample data

Utilize a aplicação de amostra que descarregou para gerar dados.Use the sample app you downloaded to generate data.

  1. Abra a solução de aplicação de exemplo no Visual Studio.Open the sample app solution in Visual Studio.

  2. No ficheiro program.cs, atualize a eventHubName constante para o nome do seu Event Hub e atualize a connectionString constante para a cadeia de ligação que copiou do espaço de nomes do Event Hub.In the program.cs file, update the eventHubName constant to the name of your Event Hub and update the connectionString constant to the connection string you copied from the Event Hub namespace.

    const string eventHubName = "test-hub";
    // Copy the connection string ("Connection string-primary key") from your Event Hub namespace.
    const string connectionString = @"<YourConnectionString>";
    
  3. Compile e execute a aplicação.Build and run the app. A aplicação envia mensagens para o hub de eventos e apresenta o estado a cada dez segundos.The app sends messages to the event hub, and it prints out status every ten seconds.

  4. Depois de a aplicação enviar algumas mensagens, avance para o próximo passo: rever o fluxo de dados no hub de eventos e testar a tabela.After the app has sent a few messages, move on to the next step: reviewing the flow of data into your event hub and test table.

Rever o fluxo de dadosReview the data flow

Com a aplicação de geração de dados, agora pode ver o fluxo dos dados do hub de eventos para a tabela no seu cluster.With the app generating data, you can now see the flow of that data from the event hub to the table in your cluster.

  1. No portal do Azure, no seu hub de eventos, verá o pico de atividade enquanto a aplicação está em execução.In the Azure portal, under your event hub, you see the spike in activity while the app is running.

    Gráfico do hub de eventos

  2. Para verificar quantas mensagens chegaram à base de dados até ao momento, execute a consulta seguintes na base de dados de teste.To check how many messages have made it to the database so far, run the following query in your test database.

    TestTable
    | count
    
  3. Para ver o conteúdo das mensagens, execute a seguinte consulta:To see the content of the messages, run the following query:

    TestTable
    

    O conjunto de resultados deve ser o seguinte:The result set should look like the following:

    Conjunto de resultados das mensagens

    Nota

    • O Azure Data Explorer tem uma política de agregação (loteamento) para a ingestão de dados, concebida para otimizar o processo de ingestão.Azure Data Explorer has an aggregation (batching) policy for data ingestion, designed to optimize the ingestion process. A apólice está configurada para 5 minutos ou 500 MB de dados, por padrão, para que possa experimentar uma latência.The policy is configured to 5 minutes or 500 MB of data, by default, so you may experience a latency. Consulte a política de loteamento para opções de agregação.See batching policy for aggregation options.
    • A ingestão do Event Hub inclui o tempo de resposta do Event Hub de 10 segundos ou 1 MB.Event Hub ingestion includes Event Hub response time of 10 seconds or 1 MB.
    • Configure a sua tabela para suportar o streaming e remova o lag em tempo de resposta.Configure your table to support streaming and remove the lag in response time. Consulte a política de streaming.See streaming policy.

Limpar recursosClean up resources

Se não planear voltar a utilizar o hub de eventos, limpe test-hub-rg, para evitar incorrer em custos.If you don't plan to use your event hub again, clean up test-hub-rg, to avoid incurring costs.

  1. No portal do Azure, selecione Grupos de recursos à esquerda e, em seguida, selecione o grupo de recursos que criou.In the Azure portal, select Resource groups on the far left, and then select the resource group you created.

    Se o menu à esquerda estiver fechado, selecioneIf the left menu is collapsed, select botão Expandir para expandi-lo.to expand it.

    Selecionar grupo de recursos a eliminar

  2. Em test-resource-group, selecione Eliminar grupo de recursos.Under test-resource-group, select Delete resource group.

  3. Na nova janela, escreva o nome do grupo de recursos a eliminar (test-hub-rg) e, em seguida, selecione Eliminar.In the new window, type the name of the resource group to delete (test-hub-rg), and then select Delete.

Passos seguintesNext steps