Skip to main content

Visão geral

Este artigo apresenta o processo de envio de dados de um tópico Kafka para uma tabela do ClickHouse. Usaremos o feed de mudanças recentes da Wiki, que fornece um fluxo de eventos que representa alterações feitas em várias propriedades da Wikimedia. As etapas incluem:
  1. Como configurar o Kafka no Ubuntu
  2. Fazer a ingestão de um fluxo de dados em um tópico Kakfa
  3. Criar uma tabela do ClickHouse que se inscreve no tópico

1. Configurar o Kafka no Ubuntu

  1. Crie uma instância Ubuntu ec2 e conecte-se a ela via SSH:
  1. Instale o Kafka (com base nas instruções disponíveis aqui: https://www.linode.com/docs/guides/how-to-install-apache-kafka-on-ubuntu/):
  1. Inicie o ZooKeeper:
  1. Abra um novo terminal e inicie o Kafka:
  1. Abra um terceiro terminal e crie um tópico chamado wikimedia:
  1. Você pode verificar se ele foi criado com sucesso da seguinte forma:

2. Faça a ingestão do stream da Wikimedia no Kafka

  1. Primeiro, precisamos de alguns utilitários:
  1. Os dados são enviados ao Kafka usando um comando curl inteligente que captura os eventos mais recentes da Wikimedia, extrai os dados em JSON e os envia para o tópico do Kafka:
  1. Você pode “descrever” o tópico:
  1. Vamos verificar se tudo está funcionando consumindo alguns eventos:
  1. Pressione Ctrl+c para interromper o comando anterior.

3. Faça a ingestão dos dados no ClickHouse

  1. Veja como são os dados recebidos:
  1. Precisaremos do motor de tabela Kafka para extrair os dados do tópico do Kafka:
  1. Por algum motivo, o motor de tabela Kafka parece pegar a URL pública do ec2 e convertê-la em um nome DNS privado, então tive que adicioná-lo ao meu arquivo local /etc/hosts:
  1. Você pode ler de uma tabela do Kafka; basta habilitar uma configuração:
As linhas devem retornar já interpretadas corretamente com base nas colunas definidas na tabela wikiQueue:
  1. Precisamos de uma tabela MergeTree para armazenar esses eventos recebidos:
  1. Vamos definir uma visão materializada que é acionada quando ocorre um insert na tabela Kafka e envia os dados para a nossa tabela rawEvents:
  1. Você deve começar a ver dados chegando em rawEvents quase imediatamente:
  1. Vamos ver algumas das linhas:
  1. Vamos ver quais tipos de eventos estão chegando:
Vamos definir uma visão materializada encadeada à visão materializada atual. Vamos acompanhar algumas estatísticas agregadas por minuto:
  1. Precisaremos das funções -Merge para ver os resultados:
Última modificação em 3 de julho de 2026