Screenshot du dashboard Bike Sales
Dataset des ventes de vélos en Europe
Ce dataset offre des données structurées, idéales pour nos besoins en traitement batch et streaming.
Voici une liste de question que nous voulons aborder:
- Quel est le revenu réalisé pour chaque catégorie de produit ?
- Quel est le revenu réalise pour chaque sous-catégorie de produit ?
- Quel est le top 20 des produits générant le plus de revenu ?
- Un top 10 des produits générant le plus de revenu en France ?
- Quel tranche d'âge de client réalise le plus d'achats ?
- En temps réel, combien de profit a été réalisé les 30 derniers jours ?
Votre rapport Hadoop (dans un scénario idéal).
http://localhost:8088/cluster/apps
source init.sh #ou ./init.sh
- Pull l'image du cluster hadoop
- Lancer le docker compose contenant notre base de donnée PostgreSQL et le setup de l'application Grafana
- Déplacer les scripts Spark et les fichiers à traiter vers le cluster hadoop
- Lancer les scripts et alimenter la base de données
source init-streaming.sh #ou ./init-streaming.sh
# Pour relancer manuellement:
# docker exec hadoop-master /bin/bash -c "spark-submit --jars /opt/spark/jars/postgresql-42.7.3.jar --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.1.2 /root/sales/spark_listener.py"
- Lancer le docker compose stream contenent notre container pour le serveur fastAPI (port:8000) pour produire des données en temps réel et le broker kafka
- Lancer le script d'écoute du producer kafka
Schéma de l'architecture (voir le détails dans le dossier tp00-pipeline-architecture)
Enfin, veuillez vous rendre sur localhost:3000 dans le Dashboard et vous connecter sur Grafana (username: admin, password: admin) afin d'avoir la visualisation des réponses aux objectifs.
# Client homme de 18 ans en Belgique achète un vélo de montagne MTB 1000 pour 250€, profit de 50€
curl --location 'localhost:8000/produce/' \
--header 'Content-Type: application/json' \
--data '{
"Date": "2024-08-02",
"Day": 2,
"Month": 8,
"Year": 2024,
"Customer_Age": 18,
"Age_Group": "Young Adults (25-34)",
"Customer_Gender": "Male",
"Country": "Belgium",
"State": "California",
"Product_Category": "Bikes",
"Sub_Category": "Mountain Bikes",
"Product": "MTB 1000",
"Order_Quantity": 1,
"Unit_Cost": 200.00,
"Unit_Price": 250.00,
"Profit": 50.00,
"Cost": 200.00,
"Revenue": 250.00
}'
- L'image initial du cluster hadoop vient du TP BigData de l'Ecole Centrale de Lyon proposé par Stéphane DERRODE.
- Documentation pySpark
- Documentation Grafana
- Faustine CHARRIER
- Mattis ALMEIDA LIMA
- Louisan TCHITOULA
- Djédjé GBOBLE
- Julien HEITZ