Ce projet démontre le traitement parallèle et distribué de données de ventes avec Apache Spark en utilisant Java. L'application est testée localement puis déployée sur un cluster Docker.
Développement d'une application Spark qui analyse un fichier ventes.txt
pour calculer :
- Le total des ventes par ville
Extension de l'application pour calculer :
- Le total des ventes par ville et par année
Format du fichier d'entrée :
date,ville,produit,prix
2025-01-01,Rabat,Ordinateur,7000.0
2025-01-01,Marrakech,Imprimante,3000.0
2025-01-01,Fes,Ecran,1500.0
spark-parallel-distributed-processing/
├── src/
│ └── main/
│ └── java/
│ └── net/
│ └── oussama/
│ ├── App1.java # Total des ventes par ville
│ ├── App2.java # Total des ventes par ville et année
│ └── Main.java # Application combinée
├── ventes.txt # Données de ventes
├── pom.xml # Configuration Maven
└── target/
└── spark-parallel-distributed-processing-1.0-SNAPSHOT-jar-with-dependencies.jar
- Java 11
- Apache Spark 3.5.5
- Maven 3.8+
- Docker & Docker Compose
- Bitnami Spark Docker image
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
mvn clean package
spark-submit --class net.oussama.App1 --master spark://spark-master:7077 spark-parallel-distributed-processing-1.0-SNAPSHOT-jar-with-dependencies.jar
spark-submit --class net.oussama.App2 --master spark://spark-master:7077 spark-parallel-distributed-processing-1.0-SNAPSHOT-jar-with-dependencies.jar
docker-compose up -d
Interface Web Spark : http://localhost:8080
docker cp ./spark-parallel-distributed-processing-1.0-SNAPSHOT-jar-with-dependencies.jar spark-master:/opt/bitnami/spark
docker cp ./spark-parallel-distributed-processing-1.0-SNAPSHOT-jar-with-dependencies.jar spark-worker-1:/opt/bitnami/spark
docker cp ./ventes.txt spark-master:/opt/bitnami/spark
docker exec -it spark-master bash
cd /opt/bitnami/spark
# Exécution de l'application principale
spark-submit --class net.oussama.Main --master spark://spark-master:7077 spark-parallel-distributed-processing-1.0-SNAPSHOT-jar-with-dependencies.jar
Ce projet démontre la puissance d'Apache Spark pour le traitement parallèle et distribué de données. À travers ces applications, nous avons illustré :
- La simplicité de développement : Spark permet d'implémenter des analyses complexes avec peu de code
- La scalabilité : La même application fonctionne localement et sur un cluster distribué
- La flexibilité : Les transformations RDD permettent diverses analyses sur les mêmes données