Ce projet a pour but de prédire la disponibilité des Vélib' en utilisant :
- Airflow 🌀 pour orchestrer les tâches ETL.
- Spark ML 🔥 pour entraîner un modèle de prédiction.
- Elasticsearch & Kibana 📊 pour stocker et visualiser les résultats.
-
Ingestion des données
- API Vélib' Métropole (disponibilité des stations).
- API Open-Meteo (météo actuelle et prévisions).
- Stockage des données brutes sur Localstack S3 (
s3a://my-bucket/raw/).
-
Transformation des données
- Nettoyage et mise au format Parquet (
s3a://my-bucket/fmt/). - Agrégation des données (
s3a://my-bucket/agg/).
- Nettoyage et mise au format Parquet (
-
Modélisation Machine Learning
- Régression linéaire avec Spark ML pour estimer les vélos disponibles.
- Entraînement stocké sur Localstack S3 (
s3a://my-bucket/models/).
-
Prédictions & Indexation
- Prédictions pour les prochaines 24h 🔮.
- Stockage des résultats dans Elasticsearch (
index: velib_predictions).
Vous pouvez facilement importer le dashboard prédéfini en utilisant le fichier kibana_dashboard.ndjson.
docker compose up -d --builddocker compose ps- Stockage des résultats dans Elasticsearch Tu dois voir Airflow, Spark, Elasticsearch et Kibana actifs.
| Service | URL d'accès |
|---|---|
| Airflow | http://localhost:8080 |
| Kibana | http://localhost:5601 |
| Elasticsearch | http://localhost:9200 |
Les tâches Airflow s'exécutent automatiquement.
- Ingestion → APIs Vélib’ et météo
- Transformation → Nettoyage et mise en Parquet
- Agrégation → Fusion des données
- Indexation Elasticsearch → Affichage dans Kibana
- Update_station_info → APIs Vélib’
- predict_bike_availability → prédit les nombres de vélos disponibles
- train_model → Entraine le modèle
📌 Pull Requests et suggestions bienvenues !
1️⃣ Forker le repo 📌
2️⃣ Créer une branche feature/mon-amélioration
3️⃣ Proposer un Pull Request 🚀
✅ Prédictions en temps réel avec Kafka
✅ Ajouter une API météo plus précise
✅ Ajouter Grafana pour d'autres visualisations
✅ Déployer sur AWS/GCP
👤 Manoel Malaury - GitHub
✉️ Contact : manoel@malaurytoussi.cm
🚀 Enjoy & Keep Coding! 😃
