Skip to content

Latest commit

 

History

History
229 lines (160 loc) · 6.12 KB

File metadata and controls

229 lines (160 loc) · 6.12 KB

🕹️ MushMC BedWars ETL Pipeline

Pipeline de Engenharia de Dados para transformar logs não estruturados de partidas em tabelas analíticas e visualizações automatizadas.

Python Apache Spark Pandas ETL


📌 Sobre o projeto

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.

O pipeline realiza

  • 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.

🏗️ Arquitetura do pipeline

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

📊 Resultados visuais

Os gráficos abaixo são gerados automaticamente a partir dos dados processados pelo pipeline.

Volume de eventos

Gráfico com o volume de eventos identificados durante uma partida de BedWars

Compras e desempenho PvP

Gráfico com os itens mais comprados durante a partida Gráfico de desempenho pessoal em eventos PvP

Outros resultados gerados


🧠 Desafios de engenharia resolvidos

Encoding legado

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.

Parsing de dados não estruturados

Expressões regulares identificam e categorizam mensagens de economia, PvP, objetivos e sistema, extraindo os campos necessários para a análise.

Separação cronológica das partidas

Como um mesmo arquivo pode acumular várias partidas, o pipeline utiliza Window Functions e soma cumulativa para criar o campo match_id.

Compatibilidade com Windows

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.


🧰 Tecnologias utilizadas

Python PySpark Apache Spark Spark SQL Pandas Regex Matplotlib Seaborn


📁 Estrutura principal

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

▶️ Como executar

1. Clone o repositório

git clone https://github.com/Daviramos7/Mushmc-bedwars-etl.git
cd Mushmc-bedwars-etl

2. Crie um ambiente virtual

python -m venv .venv

No Windows:

.\.venv\Scripts\Activate.ps1

No Linux ou macOS:

source .venv/bin/activate

3. Instale as dependências

pip install -r requirements.txt

4. Adicione o arquivo de entrada

Coloque o arquivo latest.log em:

data/raw/latest.log

5. Configure o jogador principal

No arquivo src/mushmc_bedwars_etl.py, altere a constante:

JOGADOR_PRINCIPAL = "seu_nick_aqui"

6. Execute o pipeline

python src/mushmc_bedwars_etl.py

📦 Saídas geradas

Apó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.


🔐 Privacidade dos dados

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.


📄 Licença

Copyright © 2026 Davi Ramos Ferreira. Todos os direitos reservados.


Desenvolvido por Davi Ramos Ferreira