Sobre o projeto

A Plataforma de Análise de Clickstream E-Commerce é um projeto full-stack de engenharia de dados que processa aproximadamente 285 milhões de eventos de clickstream de um dataset do Kaggle, abrangendo outubro a novembro de 2019. ## Visão Geral A plataforma ingere dados brutos de eventos em CSV (~14 GB) em um armazenamento de objetos compatível com S3 (MinIO), executa análises batch via Apache Spark, realiza streaming ao vivo através do Kafka e Spark Structured Streaming, executa trabalhos Hadoop MapReduce e fornece os resultados por meio de uma API FastAPI para um frontend React. ## Componentes da Arquitetura **Ingestão e Armazenamento:** - MinIO (armazenamento de objetos compatível com S3) guarda CSVs brutos e saídas Parquet - PostgreSQL 16.3 armazena KPIs agregados e resultados prontos para consulta - Redis 7.4.1 fornece a camada de cache - Apache Kafka 3.9 (modo KRaft) atua como barramento de mensagens para dados em streaming **Processamento:** - Apache Spark 3.5 realiza ETL batch com cinco jobs PySpark: cálculo diário de KPIs, análise de funil, detecção de abandono de carrinho, pontuação de afinidade de produtos e preparação de dados para MapReduce - Apache Hadoop 3.4.1 executando YARN Streaming rodou dois trabalhos MapReduce (contagem de eventos por categoria e agregação de receita por marca) - Spark Structured Streaming consome do Kafka, agregando sessões ativas a cada 5 segundos e fazendo upsert no PostgreSQL **Orquestração e API:** - Apache Airflow 2.9.3 orquestra o pipeline batch completo como um DAG - FastAPI (com asyncpg) expõe endpoints REST para o dashboard - Templates Terraform cobrem deploy na AWS e GCP **Frontend:** - React 18.3 com TypeScript, Tailwind CSS e Recharts renderiza quatro páginas: - Visão Geral: cartões de KPI e gráficos de tendência diária - Análise de Funil: fluxo visualização-carrinho-compra e abandono por categoria - Análise de Produtos: top produtos, marcas e categorias - Monitor ao Vivo: rastreamento de sessões em tempo real via Server-Sent Events ## Pipeline de Dados 1. **Análise Batch**: O CSV bruto é lido do MinIO; métricas diárias (eventos, usuários, receita, taxa de conversão), top produtos/marcas/categorias são computados e gravados no PostgreSQL. Um job separado calcula taxas de funil por categoria, identifica abandono de carrinho e calcula scores de lift de afinidade de produtos (amostragem em 10% para performance). 2. **MapReduce**: Arquivos Parquet preparados são convertidos para CSV e enviados ao HDFS, onde jobs Hadoop Streaming contam eventos por categoria/event_type e somam receita por marca. 3. **Streaming ao Vivo**: Um producer do Kafka reexecuta o CSV em uma taxa configurável (padrão: 200 eventos/segundo). Um consumidor Spark Streaming agrega sessões ativas em micro-batches de 5 segundos e persiste na tabela `live_sessions`. ## Deploy Todos os 13 serviços rodam via Docker Compose. Os pré-requisitos incluem Docker Desktop >= 4.30 com pelo menos 16 GB de RAM e 30 GB de espaço em disco. Usuários Windows precisam do WSL2 com pelo menos 12 GB de memória. O Makefile oferece targets para iniciar serviços, fazer upload de dados, executar pipelines e rodar testes. URLs de acesso após o startup: Dashboard (porta 3000), FastAPI docs (porta 8000), Airflow (porta 8080), MinIO Console (porta 9001), Spark Master UI (porta 8081), HDFS NameNode (porta 9870) e YARN (porta 8088). ## Estrutura do Repositório Os principais diretórios incluem `spark/jobs/` para os cinco scripts PySpark batch, `spark/streaming/` para o consumer do Kafka, `kafka/producer/` para o producer de replay, `api/` para o serviço FastAPI com endpoints roteados, `frontend/` para a aplicação React, `hadoop/mapreduce/` para os scripts de jobs de streaming, `airflow/dags/` para orquestração, `terraform/` para templates IaC e `docker/` para definições dos serviços Hadoop e Kafka. Licença: MIT