Pipeline de Engenharia de Dados para transformar logs não estruturados de partidas em tabelas analíticas e visualizações automatizadas.
Este projeto implementa um pipeline ETL ponta a ponta para processar logs brutos gerados durante partidas de BedWars no servidor MushMC, em Minecraft 1.8.9.
O pipeline normaliza o encoding dos arquivos, identifica eventos por expressões regulares, separa partidas com Window Functions, estrutura os dados com PySpark e gera automaticamente arquivos analíticos e dashboards.
- leitura e normalização de logs em Windows-1252;
- conversão dos arquivos para UTF-8;
- classificação de eventos com Regex;
- identificação cronológica das partidas;
- extração de jogadores, itens, recursos e objetivos;
- agregações analíticas com PySpark;
- exportação dos resultados em CSV;
- geração automatizada de gráficos em PNG.
latest.log
│
▼
Normalização de encoding
Windows-1252 → UTF-8
│
▼
Ingestão com PySpark
│
▼
Parsing e classificação com Regex
│
▼
Separação de partidas com Window Functions
│
▼
Transformações e agregações analíticas
│
├── Eventos da partida
├── Compras e recursos
├── Kills e mortes
└── Camas destruídas
│
▼
Pandas + Matplotlib + Seaborn
│
▼
CSV estruturado + dashboards PNG
Os gráficos abaixo são gerados automaticamente a partir dos dados processados pelo pipeline.
- jogadores com mais kills;
- camas destruídas por time;
- volume de eventos identificados;
- itens mais comprados.
Os logs de origem utilizam Windows-1252, enquanto o Spark espera UTF-8. O pipeline realiza uma etapa de normalização em Python antes da ingestão na JVM, evitando caracteres corrompidos.
Expressões regulares identificam e categorizam mensagens de economia, PvP, objetivos e sistema, extraindo os campos necessários para a análise.
Como um mesmo arquivo pode acumular várias partidas, o pipeline utiliza Window Functions e soma cumulativa para criar o campo match_id.
Para contornar limitações locais relacionadas ao Hadoop e ao winutils.exe, a exportação final é realizada com Pandas após o processamento analítico no Spark.
Python PySpark Apache Spark Spark SQL Pandas Regex Matplotlib Seaborn
Mushmc-bedwars-etl/
├── data/
│ ├── raw/
│ │ └── latest.log
│ └── curated/
│ ├── bedwars_analytics.csv
│ └── dashboards/
│ ├── 01_top_itens.png
│ ├── 02_volume_eventos.png
│ ├── 03_top_killers.png
│ ├── 04_performance_pvp.png
│ └── 05_camas_destruidas.png
├── src/
│ └── mushmc_bedwars_etl.py
├── requirements.txt
└── README.md
git clone https://github.com/Daviramos7/Mushmc-bedwars-etl.git
cd Mushmc-bedwars-etlpython -m venv .venvNo Windows:
.\.venv\Scripts\Activate.ps1No Linux ou macOS:
source .venv/bin/activatepip install -r requirements.txtColoque o arquivo latest.log em:
data/raw/latest.log
No arquivo src/mushmc_bedwars_etl.py, altere a constante:
JOGADOR_PRINCIPAL = "seu_nick_aqui"python src/mushmc_bedwars_etl.pyApós a execução, o pipeline produz:
data/curated/
├── bedwars_analytics.csv
└── dashboards/
├── 01_top_itens.png
├── 02_volume_eventos.png
├── 03_top_killers.png
├── 04_performance_pvp.png
└── 05_camas_destruidas.png
O arquivo CSV pode ser utilizado em ferramentas como Power BI e Excel, enquanto os gráficos apresentam os principais resultados da execução.
Logs podem conter nomes de jogadores e mensagens registradas durante as partidas. Antes de publicar novos arquivos, revise o conteúdo e evite disponibilizar informações que não sejam necessárias para demonstrar o pipeline.
Copyright © 2026 Davi Ramos Ferreira. Todos os direitos reservados.
Desenvolvido por Davi Ramos Ferreira


