Ingerir dados dos Hubs de Eventos no Data Explorer do Azure Synapse
O Azure Synapse Data Explorer é um serviço de exploração de dados rápido e altamente escalonável para dados de log e telemetria. O Azure Synapse Data Explorer oferece ingestão (carregamento de dados) de Hubs de Eventos, Hubs IoT e blobs gravados nos contêineres de blob.
O Azure Synapse Data Explorer oferece a ingestão (carregamento de dados) dos Hubs de Eventos, uma plataforma de streaming de Big Data e serviço de ingestão de eventos. Os Hubs de Eventos podem processar milhões de eventos por segundo quase em tempo real. Neste artigo, você criará Hubs de Eventos, irá conectar-se a eles a partir do Data Explorer do Azure Synapse e verá o fluxo de dados pelo sistema.
Pré-requisitos
Uma assinatura do Azure. Criar uma conta gratuita do Azure.
Criar um pool do Data Explorer usando o Synapse Studio ou o portal do Azure
Criar um banco de dados do Data Explorer.
No Synapse Studio, no painel esquerdo, selecione Dados.
Selecione + (Adicionar novo recurso) >Pool do Data Explorer e use as seguintes informações:
Configuração Valor sugerido Descrição Nome do pool contosodataexplorer O nome do pool do Data Explorer a ser usado Nome TestDatabase O nome do banco de dados deve ser exclusivo dentro do cluster. Período de retenção padrão 365 O período de tempo (em dias) durante o qual há a garantia de que os dados serão mantidos disponíveis para consulta. O período é medido a partir do momento em que os dados são incluídos. Período de cache padrão 31 O período de tempo (em dias) durante o qual os dados consultados com frequência devem ser mantidos disponíveis no armazenamento SSD ou RAM, em vez de no armazenamento de longo prazo. Selecione Criar para criar o banco de dados. A criação geralmente leva menos de um minuto.
Criar uma tabela de destino para a qual os Hubs de Eventos enviarão dados
No Synapse Studio, no painel do lado esquerdo, selecione Desenvolver.
Em Scripts KQL, selecione + (Adicionar novo recurso) >Script KQL. No painel do lado direito, você pode nomear o script.
No menu Conexão, selecione contosodataexplorer.
No menu Usar banco de dados, selecione TestDatabase.
Cole o comando a seguir e selecione Executar para criar uma tabela.
.create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
Dica
Verifique se a tabela foi criada com êxito. No painel esquerdo, selecione Dados, selecione o menu contosodataexplorer e, em seguida, selecione Atualizar. Em contosodataexplorer, expanda Tabelas e verifique se a tabela TestTable é exibida na lista.
Copie o seguinte comando na janela e selecione Executar para mapear os dados JSON de entrada para os tipos de dados e nomes de coluna da tabela (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"}}]'
É recomendável usar uma identidade gerenciada atribuída pelo usuário ou uma identidade gerenciada atribuída pelo sistema para a conexão de dados (opcional).
Um aplicativo de exemplo que gera dados e os envia para um hub de eventos. Baixe o aplicativo de exemplo em seu sistema.
Visual Studio 2019 para executar o aplicativo de exemplo.
Entre no Portal do Azure
Entre no portal do Azure.
Criar um Hub de Evento
Crie um hub de eventos usando um modelo do Azure Resource Manager no portal do Azure.
Para criar um hub de eventos, use o botão a seguir para iniciar a implantação. Clique com o botão direito do mouse e selecione Abrir em nova janela para que você possa acompanhar o restante das etapas neste artigo.
O botão Implantar no Azure leva você ao portal do Azure.
Selecione a assinatura na qual você deseja criar o hub de eventos e crie um grupo de recursos denominado test-hub-rg.
Preencha o formulário com as seguintes informações.
Use padrões para quaisquer configurações não listadas na tabela a seguir.
Configuração Valor sugerido Descrição do campo Subscription Sua assinatura Selecione a assinatura do Azure que você deseja usar para seu Hubs de Eventos. Grupo de recursos test-hub-rg Criar um grupo de recursos. Localização Oeste dos EUA Selecione Oeste dos EUA para este artigo. Para um sistema de produção, selecione a região que melhor atenda às suas necessidades. Crie o namespace dos Hubs de Eventos na mesma Localização que o cluster do Data Explorer do Azure Synapse para melhor desempenho (mais importante para namespaces dos Hubs de Eventos com alta taxa de transferência). Nome do Namespace Um nome de namespace exclusivo Escolha um nome exclusivo que identifique seu namespace. Por exemplo, mytestnamespace . O nome do domínio servicebus.windows.net é anexado ao nome que você fornece. O campo pode conter apenas letras, números e hifens. O nome deve começar com uma letra e terminar com uma letra ou um número. O valor deve ter entre 6 e 50 caracteres. Nome dos Hub de Eventos test-hub Os Hubs de Eventos ficam sob o namespace, que fornece um contêiner de escopo exclusivo. O nome dos Hubs de Eventos deve ser exclusivo dentro do namespace. Nome do grupo de consumidor test-group Grupos de consumidores permitem que vários aplicativos de consumo tenham uma visão separada do fluxo de eventos. Selecione Examinar + criar.
Revise o Resumo dos recursos criados. Selecione Criar, que confirma que você está criando recursos na sua assinatura.
Selecione Notificações na barra de ferramentas para monitorar o processo de provisionamento. Pode levar alguns minutos para que a implantação seja bem-sucedida, mas você pode passar para a próxima etapa agora.
Considerações sobre autenticação
Dependendo do tipo de identidade que você está usando para autenticar com o Hubs de Eventos, talvez seja necessário algumas outras configurações.
Se você estiver autenticando com Hubs de Eventos usando uma identidade gerenciada atribuída pelo usuário, vá para seus Hubs de Eventos >Rede e, em seguida, em Permitir acesso de, selecione Todas as redes e salve as alterações.
Se você estiver autenticando com Hubs de Eventos usando uma identidade gerenciada atribuída pelo sistema, vá para seu Hubs de Eventos >Rede e, em seguida, permita o acesso de todas as redes ou em Permitir acesso de, selecione Redes selecionadas, selecione Permitir que serviços confiáveis da Microsoft ignorem esse firewall e salve as alterações.
Conectar-se ao Hubs de Eventos
Agora você se conectar-se aos Hubs de Eventos a partir do pool do Data Explorer. Quando essa conexão estiver em vigor, os dados que fluem para o Hubs de Eventos serão transmitidos para a tabela de teste que você criou anteriormente nesse artigo.
Selecione Notificações na barra de ferramentas para verificar se a implantação dos Hubs de Eventos foi bem-sucedida.
No pool do Data Explorer que você criou, selecione bancos de dados>TestDatabase.
Selecione conexões de dados e Adicionar conexão de dados.
Criar uma conexão de dados (versão prévia)
Preencha o formulário com as seguintes informações e, em seguida, selecione Criar.
Configuração | Valor sugerido | Descrição do campo |
---|---|---|
Nome da conexão de dados | teste de hub de conexão | O nome da conexão que você deseja criar no Azure Synapse Data Explorer. |
Subscription | A ID da assinatura em que o recurso dos Hubs de Eventos está localizado. Este campo é preenchido automaticamente. | |
Namespace do Hubs de Eventos | Um nome de namespace exclusivo | O nome escolhido anteriormente que identifica seu namespace. |
Hubs de Eventos | test-hub | Os Hubs de Eventos que você criou. |
Grupo de consumidores | test-group | O grupo de consumidores definido nos Hubs de Eventos que você criou. |
Propriedades do sistema de eventos | Selecionar propriedades relevantes | As propriedades do sistema dos Hubs de Eventos. Se houver vários registros por mensagem de evento, as propriedades do sistema serão adicionadas ao primeiro registro. Ao adicionar propriedades do sistema, crie ou atualize o esquema de tabela e o mapeamento de maneira a incluir as propriedades selecionadas. |
Compactação | Nenhuma | O tipo de compactação do conteúdo das mensagens dos Hubs de Eventos. Tipos de compactação compatíveis: Nenhum, Gzip. |
Identidade Gerenciada | Atribuída pelo sistema | A identidade gerenciada usada pelo cluster do Data Explorer para acesso de leitura aos Hubs de Eventos. Observação: Quando a conexão de dados é criada: - As identidades atribuídas pelo sistema serão criadas automaticamente se ainda não existirem – A identidade gerenciada é atribuída automaticamente à função receptor de dados dos Hubs de Eventos do Azure e adicionada ao cluster do Data Explorer. É recomendável verificar se a função foi atribuída e se a identidade foi adicionada ao cluster. |
Tabela de destino
Há duas opções para rotear os dados ingeridos: estático e dinâmico. Para este artigo, você usará o roteamento estático, no qual especificará o nome da tabela, o formato de dados e o mapeamento como valores padrão. Se a mensagem dos Hubs de Eventos incluir informações de roteamento de dados, essas informações de roteamento substituirão as configurações padrão.
Preencha as seguintes configurações de roteamento:
Configuração Valor sugerido Descrição do campo Nome da tabela TestTable A tabela criada na TestDatabase. Formato de dados JSON Os formatos com suporte são Avro, CSV, JSON, MULTILINE JSON, ORC, PARQUET, PSV, SCSV, SOHSV, TSV, TXT, TSVE, APACHEAVRO e W3CLOG. Mapeamento TestMapping O mapeamento que você criou em TestDatabase, que mapeia os dados de entrada para os tipos de dados e nomes de coluna de TestTable. Obrigatório para JSON, MULTILINE JSON e AVRO e opcional para outros formatos. Observação
- Você não precisa especificar todas as Configurações de roteamento padrão. Configurações parciais também são aceitas.
- Somente os eventos enfileirados após a criação da conexão de dados são ingeridos.
Selecione Criar.
Mapeamento de propriedades do sistema de eventos
Observação
- As propriedades do sistema têm suporte para
json
e para formatos tabulares (csv
,tsv
etc.) e não têm suporte em dados compactados. Ao usar um formato sem suporte, os dados ainda serão ingeridos, mas as propriedades serão ignoradas. - Para dados tabulares, as propriedades do sistema têm suporte apenas para mensagens de evento de registro único.
- Para dados JSON, as propriedades do sistema também têm suporte para mensagens de evento de vários registros. Nesses casos, as propriedades do sistema são adicionadas somente ao primeiro registro da mensagem de evento.
- Para mapeamento de
csv
, as propriedades são adicionadas no início do registro na ordem listada na tabelacsv
. - Para mapeamento de
json
, as propriedades são adicionadas de acordo com os nomes de propriedade na tabela Propriedades do sistema.
Se você selecionou Propriedades do sistema de eventos na seção Fonte de dados da tabela, inclua as propriedades do sistema no esquema e no mapeamento da tabela.
Copiar a cadeia de conexão
Quando você executa o aplicativo de exemplo listado em Pré-requisitos, a cadeia de conexão é necessária para o namespace dos Hubs de Eventos.
No namespace dos Hubs de Eventos que você criou, selecione Políticas de acesso compartilhado, depois RootManageSharedAccessKey.
Cópia cadeia de Conexão – chave primária. Você pode colá-lo na próxima seção.
Gerar dados de exemplo
Use o aplicativo de exemplo baixado para gerar dados.
Aviso
Esse exemplo usa autenticação por cadeia de conexão para se conectar aos Hubs de Eventos para simplificar o exemplo. No entanto, codificar uma cadeia de conexão no seu script requer um grau muito alto de confiança no aplicativo e acarreta riscos de segurança.
Para soluções seguras de longo prazo, use uma destas opções:
- Autenticação sem senha
- Armazenar sua cadeia de conexão em um Azure Key Vault e usar esse método para recuperá-la em seu código.
Abrir o aplicativo de exemplo no Visual Studio.
No arquivo program.cs, atualize a
eventHubName
constante para o nome dos seus Hubs de Eventos e atualize aconnectionString
constante para a cadeia de conexão que você copiou do namespace dos Hubs de Eventos.const string eventHubName = "test-hub"; // Copy the connection string ("Connection string-primary key") from your Event Hub namespace. const string connectionString = @"<YourConnectionString>";
Compilar e executar o aplicativo. O aplicativo envia mensagens para os Hubs de Eventos e imprime seu status a cada 10 segundos.
Depois que o aplicativo enviar algumas mensagens, avance para a próxima etapa: revisar o fluxo de dados nos seus Hubs de Eventos e tabela de teste.
Revise o fluxo de dados
Com o aplicativo gerando dados, você poderá ver agora o fluxo desses dados dos Hubs de Eventos para a tabela no seu cluster.
No portal do Azure, nos seus Hubs de Eventos, você verá o pico de atividade enquanto o aplicativo estiver em execução.
Para verificar quantas mensagens chegaram ao banco de dados até o momento, execute a consulta a seguir em seu banco de dados de teste.
TestTable | count
Para ver o conteúdo das mensagens, execute a consulta a seguir:
TestTable
O conjunto de resultados deve ser parecido com a seguinte imagem:
Observação
- O Azure Synapse Data Explorer tem uma política de agregação (envio em lote) para a ingestão de dados, criada para otimizar o processo de ingestão. A política de envio em lote padrão está configurada para lacrar um lote quando uma das seguintes condições for verdadeira para o lote: um tempo de atraso máximo de cinco minutos, tamanho total de 1G ou 1.000 blobs. Portanto, você pode ter alguma latência. Para obter mais informações, confira a política de envio em lote.
- A ingestão do Hub de Eventos inclui o tempo de resposta do Hub de Eventos de 10 segundos ou 1 MB.
- Para reduzir o retardo de tempo de resposta, configure sua tabela para dar suporte ao streaming. Confira política de streaming.
Limpar os recursos
Se você não planeja usar seus Hubs de Eventos novamente, limpe test-hub-rg para evitar custos.
No portal do Azure, selecione Grupos de recursos na extremidade esquerda, depois selecione o recurso de grupo que você criou.
Se o menu esquerdo estiver recolhido, selecione para expandi-lo.
Em test-resource-group, selecione Excluir grupo de recursos.
Na nova janela, digite o nome do grupo de recursos para excluir (test-hub-rg) e, em seguida, selecione excluir.