TP 1 – Premier contact avec Spark 4
Objectif : avoir une SparkSession qui fonctionne, charger le fil rouge et lire la Spark UI.
Ouvrez le notebook depuis la racine du dépôt : les chemins sont relatifs à
data/. La première cellule remonte automatiquement jusqu’au dossier qui contientdata/.
1. Créer une SparkSession en local, avec tous les cœurs
Section intitulée « 1. Créer une SparkSession en local, avec tous les cœurs »from pyspark.sql import SparkSessionspark = (SparkSession.builder .appName("TP") .master("local[*]") .getOrCreate())sc = spark.sparkContextprint("Spark", spark.version, "—", spark.sparkContext.uiWebUrl)2. Charger data/trips.csv (avec en-tête) et compter les lignes
Section intitulée « 2. Charger data/trips.csv (avec en-tête) et compter les lignes »Indice : spark.read.csv(chemin, header=True, inferSchema=True) puis .count().
3. Afficher le schéma et 5 lignes
Section intitulée « 3. Afficher le schéma et 5 lignes »Indice : printSchema(), puis
df.select("tpep_pickup_datetime", "PULocationID", "trip_distance", "total_amount").show(5).
4. Ouvrir la Spark UI, onglet Jobs
Section intitulée « 4. Ouvrir la Spark UI, onglet Jobs »- Combien de jobs voyez-vous ?
inferSchema=Truerelit le fichier pour deviner les types : la lecture crée elle-même des jobs, avant votrecount(). Avecheader=True, Spark lance aussi un petit job pour lire la première ligne. - Cliquez sur le job du
count(): il a 2 stages (un compte par partition, puis l’addition des comptes). Combien de tâches dans le premier ? Comparez avecdf.rdd.getNumPartitions(). - Si le port 4040 est déjà pris (un autre notebook ouvert), Spark utilise 4041 : le bon lien est
spark.sparkContext.uiWebUrl.
Bonus – CSV ou Parquet ?
Section intitulée « Bonus – CSV ou Parquet ? »Chronométrez un count() sur data/trips.csv puis sur data/trips.parquet. Lequel est le plus rapide, et
pourquoi ? (Format colonne, compressé, schéma embarqué : pas d’inférence.)
Pièges rencontrés en séance
Section intitulée « Pièges rencontrés en séance »| Symptôme | Cause | Solution |
|---|---|---|
PATH_NOT_FOUND … jour1/data/trips.csv | Le chemin relatif est résolu depuis jour1/ | Exécuter la première cellule, ou ouvrir le notebook depuis la racine |
Colonnes _c0 à _c18, 120 001 lignes | header=True oublié | L’en-tête a été lu comme une donnée |
Toutes les colonnes en string | inferSchema absent | Normal : sans inférence, Spark ne devine aucun type |
sc.master reste local[*] après avoir demandé local[2] | getOrCreate() renvoie la session déjà active | spark.stop() ou redémarrer le noyau |
ModuleNotFoundError: pyspark dans VS Code (WSL2) | VS Code utilise le Python de Windows | Extension WSL, « Connect to WSL », choisir le noyau du .venv |
Correction en direct
Section intitulée « Correction en direct »Le corrigé est publié en fin de journée (voir l’encadré « Dans le dépôt » en haut de page). Il existe en deux
formes : le notebook, pour relire pas à pas, et le script .py, exécutable d’un bloc. Attention : le script se
termine par spark.stop(), donc son lien Spark UI ne mène plus à rien une fois le script terminé. Pour explorer les
jobs, gardez votre session ouverte dans le notebook.
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.