Saltar al contenido principal

Descripción general

Este artículo explica el proceso de enviar datos desde un topic de Kafka a una tabla de ClickHouse. Usaremos el feed de cambios recientes de Wiki, que proporciona un flujo de eventos que representa los cambios realizados en varias propiedades de Wikimedia. Los pasos incluyen:
  1. Cómo configurar Kafka en Ubuntu
  2. Ingestar un flujo de datos en un topic de Kafka
  3. Crear una tabla de ClickHouse que se suscriba al topic

1. Configurar Kafka en Ubuntu

  1. Cree una instancia ec2 de Ubuntu y conéctese a ella por SSH:
  1. Instala Kafka (siguiendo las instrucciones de aquí: https://www.linode.com/docs/guides/how-to-install-apache-kafka-on-ubuntu/):
  1. Inicie ZooKeeper:
  1. Abre una nueva terminal e inicia Kafka:
  1. Abra una tercera consola y cree un topic llamado wikimedia:
  1. Puedes verificar que se haya creado correctamente de la siguiente manera:

2. Ingestar el flujo de Wikimedia a Kafka

  1. Primero necesitamos algunas utilidades:
  1. Los datos se envían a Kafka mediante un ingenioso comando curl que obtiene los eventos más recientes de Wikimedia, extrae los datos JSON y los envía al topic de Kafka:
  1. Puede “describir” el topic:
  1. Verifiquemos que todo funcione correctamente consumiendo algunos eventos:
  1. Pulsa Ctrl+c para detener el comando anterior.

3. Ingestar los datos en ClickHouse

  1. Este es el aspecto de los datos entrantes:
  1. Necesitaremos el motor de tabla Kafka para extraer los datos del topic de Kafka:
  1. Por alguna razón, el motor de tabla Kafka parece tomar la URL pública de ec2 y convertirla en el nombre DNS privado, así que tuve que añadirlo a mi archivo local /etc/hosts:
  1. Puedes leer de una tabla de Kafka; solo tienes que habilitar una opción de configuración:
Las filas deberían mostrarse correctamente interpretadas según las columnas definidas en la tabla wikiQueue:
  1. Necesitamos una tabla MergeTree para almacenar estos eventos entrantes:
  1. Definamos una vista materializada que se active cuando se realice una inserción en la tabla Kafka y envíe los datos a nuestra tabla rawEvents:
  1. Deberías empezar a ver datos en rawEvents casi de inmediato:
  1. Veamos algunas de las filas:
  1. Veamos qué tipos de eventos están llegando:
Definamos una vista materializada encadenada a la vista materializada actual. Mantendremos algunas estadísticas agregadas por minuto:
  1. Necesitaremos las funciones -Merge para ver los resultados:
Última modificación el 25 de junio de 2026