Partie 1 – Big Data, calcul distribué et premiers pas avec Spark 4
Et si vous deviez analyser 10 ans de courses de taxi… avec Excel ? Comment feriez-vous ?
Le problème : quand une seule machine ne suffit plus
Section intitulée « Le problème : quand une seule machine ne suffit plus »Excel plafonne à un million de lignes. pandas charge tout en mémoire. Une base SQL tient sur un serveur. Trois limites d’une même idée : une seule machine. Le Big Data, ce sont les situations où cette machine ne suffit plus :
| Les 3 V | Ce que ça veut dire | Sur notre fil rouge |
|---|---|---|
| Volume | Des téraoctets, au-delà de la RAM et du disque d’un serveur | 3 millions de courses par mois, 10 ans d’historique |
| Vélocité | Des données qui arrivent en continu | Chaque course est enregistrée au moment où elle se termine |
| Variété | Logs, JSON, images, tables | Courses (CSV, Parquet), zones (référentiel), logs applicatifs (texte) |
Acheter un serveur plus gros (scale up) coûte vite très cher et atteint une limite physique. La solution est de répartir le travail sur plusieurs machines ordinaires (scale out) :
- Découper les données en partitions.
- Envoyer le calcul là où sont les données, plutôt que les données vers le calcul.
- Traiter les partitions en parallèle sur N machines.
- Tolérer les pannes : si une machine tombe, on recalcule sa partition ailleurs.
Analogie : pour compter les habitants d’une ville, on n’envoie pas un seul recenseur. On envoie un recenseur par quartier, puis on additionne.
Pourquoi Spark, et pas MapReduce ?
Section intitulée « Pourquoi Spark, et pas MapReduce ? »Le calcul distribué existait avant Spark : Hadoop MapReduce (2006) découpe un traitement en phases map et reduce et écrit sur disque entre chaque phase. Pour un traitement en une passe, c’est acceptable. Pour un algorithme itératif – le Machine Learning fait des dizaines de passes sur les mêmes données – c’est rédhibitoire.
Spark (Berkeley, 2009) garde les résultats intermédiaires en mémoire : jusqu’à 100 fois plus rapide sur les traitements itératifs. Il ajoute une API unifiée – SQL, DataFrames, Machine Learning, streaming, graphes – en Python, Scala, Java, R et SQL, avec un seul moteur d’exécution. Spark ne remplace pas HDFS : il lit et écrit dessus, comme sur S3, ADLS ou une base de données.
MapReduce : Map ──▶ disque ──▶ Reduce ──▶ disque ──▶ Map ──▶ disque …Spark : Étape 1 ──▶ mémoire ──▶ Étape 2 ──▶ mémoire ──▶ Étape 3 …Spark 3 et Spark 4 en bref
Section intitulée « Spark 3 et Spark 4 en bref »| Version | Ce qu’elle a apporté |
|---|---|
| Spark 3.0 – 3.5 (2020 – 2023) | AQE (optimisation adaptative, activé par défaut depuis 3.2), Pandas API on Spark, Kubernetes en production, Spark Connect (3.4). 3.5 est la version LTS, maintenue jusqu’en 2027. |
| Spark 4.0 (mai 2025) | ANSI SQL par défaut : une division par zéro ou un cast invalide lève une erreur au lieu de produire un NULL silencieux. Type VARIANT pour le JSON semi-structuré (jusqu’à 8× plus rapide que les chaînes). Java 17+, Scala 2.13. Mesos supprimé. Spark Connect quasi complet. SparkR déprécié. |
| Spark 4.1 (2026) | Pipelines déclaratifs (Declarative Pipelines), mode temps réel du Structured Streaming (latence en millisecondes). |
Deux changements de Spark 4 cassent du code existant : le mode ANSI (le bonus 2 du TP 4 vous le fera toucher du
doigt avec try_divide) et la suppression de Mesos (migration vers Standalone, YARN ou Kubernetes).
Installer Spark 4 et le tester avec Jupyter
Section intitulée « Installer Spark 4 et le tester avec Jupyter »Spark est écrit en Scala et tourne sur la JVM : il faut un Java 17 ou 21. PySpark est le paquet Python qui embarque Spark et le pilote depuis Python.
# 1. Vérifier Java 17 (ou 21)java -version
# 2. Installer PySpark (inclut Spark) et Jupyterpip install pyspark jupyter# 3. Dans un notebook (VS Code ou Jupyter)from pyspark.sql import SparkSession
spark = (SparkSession.builder .appName("decouverte") .master("local[*]") .getOrCreate())
spark.range(1_000_000).count()print(spark.sparkContext.uiWebUrl) # 4. Spark UI : http://localhost:4040local[*]: Spark utilise tous les cœurs de votre machine, dans un seul processus, sans cluster.local[2]en utiliserait deux.- Standalone : Spark seul, sans Hadoop ni YARN. C’est le mode du TP 3.
- La Spark UI (port 4040, ou 4041 si le port est pris) montre chaque job, ses stages et ses tâches. Le lien
fiable est
spark.sparkContext.uiWebUrl.
Le fil rouge en 4 étapes
Section intitulée « Le fil rouge en 4 étapes »Toute la journée travaille sur data/trips.csv et data/trips.parquet (120 000 courses, format officiel NYC TLC) et
sur le référentiel data/taxi_zone_lookup.csv. Les 5 colonnes utiles aujourd’hui : tpep_pickup_datetime,
PULocationID, trip_distance, total_amount, et la table des zones (LocationID → Borough, Zone).
| TP | Question | Avec quoi |
|---|---|---|
| TP 1 | Charger et explorer | SparkSession, Spark UI |
| TP 2 | Top 10 des zones | RDD, PairRDD |
| TP 3 | Le même job sur un cluster + HDFS | Standalone, spark-submit, HDFS |
| TP 4 | Le même job en Spark SQL | DataFrames, SQL |
Le détail du jeu de données est sur la page Le fil rouge.
À vous de jouer
Section intitulée « À vous de jouer »→ TP 1 – Premier contact (30 min)
Transition : « 120 000 lignes, ça passe sur un portable. Et 3 milliards ? Ouvrons le capot : que fait vraiment Spark
quand vous lancez count() ? » → Partie 2 – Spark Core
Dépôt des participants : formations2026/formation-spark-ml (branche participants)
Contenu pédagogique © Ambient IT · 140 Avenue Jean Lolive, 93500 Pantin · formation@ambient-it.net · +33 (0)1 48 10 09 46
Organisme de formation enregistré sous le numéro 11 75 54743 75. Cet enregistrement ne vaut pas agrément de l'État.