Projet de Data Engineering comportant ETL et Big data avec Pyspark et Mongodb
# Togo Data Lab - Projet Data Engineering
Projet de formation en **Data Engineering** réalisé dans le cadre du **Togo Data Lab**. Comporte deux pipelines de données complets, conteneurisés avec Docker.
## Exercice 1 : Pipeline ETL (Sécurité Routière)
Pipeline ELT pour l'analyse des accidents de la route au Togo.
**Stack** : Python (Pandas), PostgreSQL 15, Docker Compose
**Pipeline** :
1. Chargement du CSV `accidents_raw.csv` (10 000 entrées)
2. Nettoyage : suppression des dates invalides, normalisation de la colonne alcool
3. Enrichissement : extraction année/mois/heure
4. Stockage dans PostgreSQL (table `accidents_clean`)
5. Vue analytique `accidents_monthly_stats` (total accidents + taux alcool par mois)
```bash
cd exercice_1_etl
docker compose up --build
```
## Exercice 2 : Pipeline Big Data (Services Publics)
Pipeline Big Data suivant l'architecture **Medallion (Bronze/Silver/Gold)** pour analyser les demandes de services publics au Togo.
**Stack** : MongoDB, Apache Spark 3.5, PostgreSQL 15, Docker Compose
**Architecture** :
- **Bronze** : Stockage brut des JSON dans MongoDB
- **Silver** : Nettoyage PySpark, harmonisation des dates, extraction des coordonnées GPS
- **Gold** : Agrégations (KPIs par région/type/statut) dans PostgreSQL
```bash
cd exercice_2_big_data
docker compose up --build -d
docker exec spark_engine python3 /opt/spark/scripts/mongo_setup.py
docker exec spark_engine spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.12:3.0.1,org.postgresql:postgresql:42.5.0 /opt/spark/scripts/spark_pipeline.py
```
## Structure du Projet
```
├── exercice_1_etl/ # Pipeline ETL (Pandas + PostgreSQL)
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── scripts/main.py # Script d'ingestion
│ ├── scripts/init_db.sql # Init table + vue
│ ├── data/accidents_raw.csv
│ └── readme.md
├── exercice_2_big_data/ # Pipeline Big Data (MongoDB + PySpark + PostgreSQL)
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── scr …