Sobre el proyecto

E-Commerce Clickstream Analytics Platform es un proyecto full-stack de ingeniería de datos que procesa aproximadamente 285 millones de eventos de clickstream de comercio electrónico de un conjunto de datos de Kaggle que abarca octubre-noviembre de 2019. ## Resumen La plataforma ingesta datos de eventos CSV crudos (~14 GB) en un almacén de objetos compatible con S3 (MinIO), ejecuta análisis por lotes mediante Apache Spark, realiza streaming en vivo a través de Kafka y Spark Structured Streaming, ejecuta trabajos Hadoop MapReduce y sirve resultados a través de un backend FastAPI hacia un dashboard frontend React. ## Componentes de Arquitectura **Ingesta y Almacenamiento:** - MinIO (almacenamiento de objetos compatible S3) conserva los CSV crudos y los resultados en formato Parquet - PostgreSQL 16.3 almacena KPIs agregados y resultados listos para consultas - Redis 7.4.1 proporciona la capa de caché - Apache Kafka 3.9 (modo KRaft) actúa como bus de mensajería para datos en streaming **Procesamiento:** - Apache Spark 3.5 maneja ETL por lotes con cinco trabajos PySpark: cálculo diario de KPIs, análisis de embudo, detección de abandono del carrito, puntuación de afinidad de productos y preparación de datos para MapReduce - Apache Hadoop 3.4.1 ejecutando YARN Streaming ejecuta dos trabajos MapReduce (conteo de eventos por categoría y agregación de ingresos por marca) - Spark Structured Streaming consume desde Kafka, agregando sesiones activas cada 5 segundos e insertando o actualizando en PostgreSQL **Orquestación y API:** - Apache Airflow 2.9.3 orquesta todo el pipeline por lotes como un DAG - FastAPI (con asyncpg) expone endpoints REST para el dashboard - Plantillas de Terraform cubren despliegues en AWS y GCP **Frontend:** - React 18.3 con TypeScript, Tailwind CSS y Recharts renderiza cuatro páginas: - Resumen: tarjetas de KPI y gráficos de tendencias diarias - Análisis de Embudo: flujo de vista-carrito-compra y abandono por categoría - Análisis de Productos: principales productos, marcas y categorías - Monitor en Vivo: rastreo de sesiones en tiempo real vía Server-Sent Events ## Pipeline de Datos 1. **Análisis por lotes**: El CSV crudo se lee desde MinIO; las métricas diarias (eventos, usuarios, ingresos, tasa de conversión), productos/marcas/categorías más populares se calculan y escriben en PostgreSQL. Un trabajo separado calcula tasas de embudo por categoría, identifica el abandono del carrito y calcula puntuaciones de uplift de afinidad de productos (muestreado al 10% por rendimiento). 2. **MapReduce**: Los archivos Parquet preparados se convierten a CSV y se cargan en HDFS, donde los trabajos Hadoop Streaming cuentan eventos por categoría/tipo_evento y suman ingresos por marca. 3. **Streaming en vivo**: Un productor de Kafka replaya el CSV a una velocidad configurable (200 eventos/segundo por defecto). Un consumidor Spark Streaming agrega sesiones activas en micro-lotes de 5 segundos y los persiste en la tabla `live_sessions`. ## Despliegue Las 13 servicios se ejecutan mediante Docker Compose. Los requisitos previos incluyen Docker Desktop >= 4.30 con al menos 16 GB de RAM y 30 GB de espacio en disco. Los usuarios de Windows requieren WSL2 con al menos 12 GB de memoria. El Makefile proporciona objetivos para iniciar servicios, cargar datos, ejecutar pipelines y ejecutar pruebas. URLs de acceso después de iniciar: Dashboard (puerto 3000), documentación FastAPI (puerto 8000), Airflow (puerto 8080), MinIO Console (puerto 9001), Spark Master UI (puerto 8081), HDFS NameNode (puerto 9870) y YARN (puerto 8088). ## Estructura del Repositorio Los directorios principales incluyen `spark/jobs/` para los cinco scripts batch PySpark, `spark/streaming/` para el consumidor Kafka, `kafka/producer/` para el productor de replay, `api/` para el servicio FastAPI con endpoints ruteados, `frontend/` para la aplicación React, `hadoop/mapreduce/` para scripts de trabajos streaming, `airflow/dags/` para orquestación, `terraform/` para plantillas IaC y `docker/` para definiciones de servicios Hadoop y Kafka. Licencia: MIT