Introducción a Kafka Streams y KSQL — AprenderBigData.com

Oscar Fmdc
3 min readMay 4, 2020

--

En este artículo de introducción aprendemos qué es Kafka Streams y KSQL: cómo usar este motor de streaming para Apache Kafka.

Cada vez es más común el uso del ecosistema de Apache Kafka para implementar aplicaciones en sistemas escalables de tiempo real. Este tipo de aplicaciones permiten acelerar la extracción de valor de los datos en multitud de sectores como telecomunicaciones, internet e industria.

Además, está profundamente relacionado con la infraestructura híbrida y cloud que están adoptando todas estas empresas. Es una de las plataformas que habilitan el movimiento de datos entre sistemas on-premises y cloud y que puede actuar como un clúster de agregación de eventos.

Casos de uso

Además de sistema de procesamiento y de distribución de datos, los casos de uso para este tipo de soluciones con Apache Kafka se centran en su uso como una plataforma central de streaming de eventos. En este caso, Kafka actúa como middleware.

También se presenta como la plataforma de integración de sistemas en todos los niveles y de movimiento de datos: entre clústers, servicios, zonas, partners externos, aplicaciones legacy y modernas, etc.

Otro caso de uso muy extendido es el de la monitorización. Entre los tipos de monitorización en tiempo real se encuentra la monitorización de hardware, de seguridad y de servicios. Este uso permite también la implementación de alertas y actuaciones rápidas ante las anomalías detectadas.

¿Qué es Kafka Streams?

Kafka Streams es una librería open source que permite construir aplicaciones de procesamiento de flujos de datos usando Apache Kafka como sistema de almacenamiento de entrada y de salida de datos. Es posible escribir las aplicaciones en los lenguajes de programación Java y Scala. Aún no está disponible la API de Kafka Streams para Python.

El llamado procesamiento en streaming consiste en procesar los datos de forma continua, tan pronto como están disponible para su análisis. Se procesa de manera secuencial sobre flujos de datos sin límites temporales. Esto ocurre en Kafka Streams y KSQL.

Para crear una aplicación Kafka Streams necesitaremos un clúster de Apache Kafka e insertar en un topic los datos que procesaremos con la aplicación. Para implementar una aplicación sencilla podemos importar la librería de Kafka Streams con maven en nuestro proyecto.

A continuación se muestra un ejemplo de aplicación Kafka Streams escrito en Java que realiza los siguientes pasos:

  1. Lee un flujo de números de un topic de Apache Kafka representados con un string y almacenados todos con la misma clave. (línea 4)
  2. Se define una ventana de tipo Tumbling de 20 segundos. (línea 6)
  3. Suma los números según se van procesando. (línea 7)
  4. Imprime los resultados por consola. (línea 9)
static String TOPIC = "TopicName";final StreamsBuilder builder = new StreamsBuilder();builder.stream(TOPIC, Consumed.with(Serdes.String(), Serdes.String())).groupByKey().windowedBy(TimeWindows.of(Duration.ofSeconds(20))).reduce((value1, value2) -> value1 + value2).toStream().print(Printed.toSysOut());Topology topology = builder.build();final KafkaStreams streams = new KafkaStreams(topology, props);streams.start();

Aprende más sobre KSQL aquí.

Echa un ojo a mi lista de reproducción de Big Data en Youtube

Originally published at https://aprenderbigdata.com on May 4, 2020.

--

--

No responses yet