Este proyecto implementa un sistema de procesamiento de datos en tiempo real utilizando Apache Kafka y Apache Spark. Se configura un topic en Kafka que simula la llegada de datos, y Spark se utiliza para consumir estos datos y realizar análisis en tiempo real. Los resultados del procesamiento se visualizan en la consola.
- Generación de datos simulados y envío a un topic de Kafka.
- Consumo de datos en tiempo real utilizando Spark Streaming.
- Análisis y procesamiento de datos para contar eventos y calcular estadísticas.
- Visualización de resultados en la consola.
- Java 8 o superior
- Apache Kafka
- Apache Spark
- Python 3.x
- Librerías de Python necesarias (por ejemplo,
pyspark , kafka-python
)
El script generator.py
tiene como objetivo simular la llegada de datos en tiempo real al topic de Kafka. A continuación se describe su funcionalidad principal:
-
Simulación de Datos: Genera datos aleatorios en un bucle continuo, creando un flujo constante de información que puede ser consumida por aplicaciones de análisis en tiempo real.
-
Configuración del Productor de Kafka: Establece una conexión con un broker de Kafka, permitiendo el envío de mensajes a un topic específico.
-
Generación de Mensajes:
- Cada mensaje puede incluir un identificador único y varios atributos aleatorios, como nombres, precios o cantidades, dependiendo de los requisitos del proyecto.
- Los datos generados representan eventos o registros que pueden ser relevantes para el análisis.
-
Envío Periódico: Los mensajes se envían al topic de Kafka a intervalos regulares, simulando una carga de trabajo realista que podría encontrarse en aplicaciones del mundo real.
-
Flexibilidad: El script se puede modificar fácilmente para generar diferentes tipos de datos, adaptándose a diversas necesidades de análisis y pruebas.
Este generador es fundamental para probar y validar la implementación de aplicaciones de streaming en Apache Spark y Kafka, proporcionando un flujo constante de datos que se puede consumir y analizar en tiempo real.
El script consumer_spark.py
se encarga de consumir los datos generados en tiempo real desde un topic de Kafka y realizar procesamiento sobre esos datos. A continuación se describe su funcionalidad principal:
-
Conexión a Kafka: Se establece una conexión con el broker de Kafka y se suscribe a un topic específico donde se están enviando los datos generados por el script generador.
-
Configuración del Streaming Context: Crea un contexto de streaming de Apache Spark que permite el procesamiento de datos en tiempo real, facilitando la ingestión y análisis de flujos de datos.
-
Consumo de Datos:
- El consumer recibe datos en micro-batches desde el topic de Kafka, lo que permite un procesamiento eficiente y escalable.
- Los datos son transformados y preparados para el análisis.
-
Procesamiento de Datos:
- Se pueden realizar diversas operaciones sobre los datos consumidos, como conteo de eventos, cálculos estadísticos y agregaciones.
- Los resultados del procesamiento pueden ser utilizados para generar informes o tomar decisiones informadas en tiempo real.
-
Visualización en Consola: Los resultados del análisis se muestran en la consola de Spark, permitiendo observar en tiempo real las métricas calculadas, como el conteo de eventos y otras estadísticas relevantes.
Este consumer es esencial para la aplicación de streaming en el proyecto, permitiendo la transformación y análisis de datos en tiempo real, lo que es crucial para obtener insights inmediatos a partir de la información generada.
El script delete_records.py
se utiliza para eliminar registros específicos de un topic tarea 3 en Kafka. Su funcionalidad incluye:
-
Configuración de Kafka: Se establece una conexión con el broker de Kafka y se define el topic del cual se desea eliminar los registros.
-
Definición de los Registros a Eliminar: Se determina qué registros o mensajes deben ser eliminados. Esto puede hacerse especificando claves o criterios específicos para identificar los mensajes en el topic.
-
Eliminación de Registros:
- Utiliza la API de Kafka para enviar solicitudes de eliminación de mensajes basadas en los criterios definidos.
- Puede incluir la eliminación de registros en función de un rango de offsets, claves específicas o cualquier otro criterio aplicable según la lógica del negocio.
-
Confirmación de Eliminación: El script proporciona retroalimentación sobre el éxito o fracaso de las operaciones de eliminación, lo que permite verificar que los registros no deseados han sido efectivamente eliminados del topic.
-
Uso en Mantenimiento: Este script es útil para mantener la integridad y relevancia de los datos en el topic, permitiendo la eliminación de información obsoleta o incorrecta.
El script de eliminación de registros es una herramienta fundamental para gestionar los datos en Kafka, asegurando que solo se conserven los mensajes relevantes y útiles para el análisis y procesamiento posterior.
Este proyecto tiene como objetivo implementar un sistema de procesamiento de datos en tiempo real utilizando Apache Spark y Kafka. A través de la generación, consumo y eliminación de registros, se busca demostrar cómo estas tecnologías pueden trabajar juntas para gestionar flujos de datos continuos de manera eficiente y efectiva.
-
Generador de Datos (
generator.py
):- Simula la llegada de datos en tiempo real a un topic de Kafka, generando mensajes aleatorios y enviándolos periódicamente. Esto permite crear un flujo constante de información que se puede consumir para análisis.
-
Consumer de Spark (
consumer_spark.py
):- Se conecta al topic de Kafka para consumir los datos generados. Utiliza un contexto de streaming de Spark para procesar estos datos en micro-batches, realizando operaciones como conteo de eventos y cálculos estadísticos. Los resultados se visualizan en la consola, ofreciendo una perspectiva en tiempo real sobre el flujo de datos.
-
Eliminación de Registros (
delete_records.py
):- Permite eliminar registros específicos de un topic en Kafka. Este script asegura que la información obsoleta o no deseada sea removida, manteniendo la integridad y relevancia de los datos almacenados.
- Demostrar el uso de Apache Kafka como una plataforma de mensajería que permite el procesamiento en tiempo real de flujos de datos.
- Implementar Apache Spark para el análisis y procesamiento eficiente de los datos consumidos de Kafka.
- Gestionar registros en Kafka, incluyendo la generación, consumo y eliminación de mensajes, facilitando un manejo efectivo de la información.
Este proyecto ejemplifica la integración de tecnologías modernas para el procesamiento de datos en tiempo real, brindando una solución robusta y escalable que puede ser aplicada en diversas industrias y aplicaciones donde la gestión eficiente de datos es crucial.