QCM : Introduction à Spark et Big Data — 20 questions

Questions et réponses du QCM

1. Quel est le rôle principal du Driver Program dans l’architecture distribuée de Spark ?

Allouer directement la mémoire sur chaque nœud
Préparer le plan d’exécution et orchestrer le travail
Stocker durablement les résultats des actions
Exécuter toutes les tâches sur les partitions

Préparer le plan d’exécution et orchestrer le travail

Explication

Le Driver prépare le plan d’exécution, crée la SparkSession et organise le travail sous forme de DAG. Les exécutors, eux, réalisent l’exécution des tâches sur les nœuds.

2. Quel composant convertit une colonne catégorielle en indices numériques appris lors du fit ?

VectorAssembler
explode
OneHotEncoder
StringIndexer

StringIndexer

Explication

StringIndexer apprend une correspondance catégorie→indice lors du fit, puis transforme la colonne en valeurs numériques. OneHotEncoder intervient ensuite pour produire des vecteurs binaires.

3. Quel est le schéma de déploiement décrit pour l’inférence en deep learning avec Spark et Keras ?

Entraîner séparément un modèle complet sur chaque worker
Exécuter uniquement du SQL sur le driver pour chaque ligne
Convertir le modèle en RDD puis utiliser collect pour l’inférence
Diffuser le modèle aux workers puis prédire par lots avec une pandas_udf

Diffuser le modèle aux workers puis prédire par lots avec une pandas_udf

Explication

Le modèle est diffusé via broadcast aux workers, qui réalisent ensuite les prédictions par lots avec une pandas_udf. Cela permet une inférence parallèle efficace.

4. Quel mode de sortie d’un flux Spark écrit uniquement les nouvelles lignes apparues depuis le dernier déclenchement ?

Update
Append
Complete
Overwrite

Append

Explication

Le mode Append ajoute seulement les nouvelles lignes détectées depuis le dernier micro-lot. Complete réécrit toute la table, tandis qu’Update ne réécrit que les lignes modifiées.

5. Quel énoncé décrit le mieux un DataFrame Spark ?

Une collection non structurée sans colonnes
Une suite d’actions exécutées immédiatement
Un fichier CSV compressé en mémoire
Une table distribuée structurée avec schéma et opérations de type SQL

Une table distribuée structurée avec schéma et opérations de type SQL

Explication

Un DataFrame est une table distribuée structurée avec des colonnes et un schéma défini. On y applique des transformations proches de SQL.

6. Que permet le checkpointing dans un flux Spark ?

Accélérer la lecture en mémoire des fichiers CSV
Remplacer les fenêtres glissantes par des fenêtres fixes
Réduire la cardinalité des catégories avant l’entraînement
Sauvegarder l’avancement et l’état pour reprendre après un arrêt ou un crash

Sauvegarder l’avancement et l’état pour reprendre après un arrêt ou un crash

Explication

Le checkpointing enregistre sur disque l’état de progression du traitement afin de reprendre correctement après une interruption. Il sert à la reprise du flux, pas à la préparation des données.

7. Pourquoi un Dockerfile personnalisé est-il utilisé pour Spark et le deep learning ?

Pour garantir un environnement identique avec les bibliothèques nécessaires sur master et workers
Pour éviter l’utilisation de pandas_udf
Pour stocker les checkpoints directement dans l’image
Pour remplacer le besoin de tout modèle entraîné

Pour garantir un environnement identique avec les bibliothèques nécessaires sur master et workers

Explication

Le Dockerfile personnalisé permet d’embarquer les bonnes dépendances et d’obtenir le même environnement sur le master et les workers. Cela facilite le déploiement cohérent des traitements de deep learning.

8. Quelle affirmation décrit correctement une action Spark ?

Elle conserve les partitions en mémoire sans retour au Driver
Elle déclenche l’exécution et renvoie un résultat exploitable
Elle produit un nouveau jeu de données sans exécuter le calcul
Elle ne fait que décrire une logique de transformation

Elle déclenche l’exécution et renvoie un résultat exploitable

Explication

Une action lance effectivement le calcul distribué et renvoie un résultat au Driver. À l’inverse, une transformation ne s’exécute pas immédiatement.

9. Quelle transition de fonctions marque principalement le passage d’un traitement batch vers un traitement streaming ?

Utiliser spark.readStream et df.writeStream à la place de spark.read et df.write
Remplacer collect par count dans les actions
Passer de DataFrame à RDD pour activer le flux
Définir un cache sur le DataFrame d’entrée

Utiliser spark.readStream et df.writeStream à la place de spark.read et df.write

Explication

En streaming, l’entrée se lit avec spark.readStream et la sortie s’écrit avec df.writeStream. C’est ce changement d’API qui caractérise le passage au traitement continu.

10. Quel est le rôle principal d’un watermark dans un traitement de flux ?

Convertir les événements en fenêtres de taille fixe
Réécrire toute la table de sortie à chaque micro-lot
Limiter l’attente des événements tardifs en fixant un retard toléré
Conserver définitivement toutes les données du flux sur disque

Limiter l’attente des événements tardifs en fixant un retard toléré

Explication

Le watermark indique combien de temps Spark accepte d’attendre des événements en retard avant de finaliser le calcul. Il ne sert pas à créer des fenêtres, mais à gérer les données tardives.

11. Pourquoi une UDF Python est-elle moins bien optimisée qu’une fonction native Spark SQL ?

Parce qu’elle écrit les résultats sur disque à chaque ligne
Parce qu’elle s’exécute côté Python et reste une boîte noire pour Catalyst
Parce qu’elle ne peut traiter que des colonnes numériques
Parce qu’elle remplace le schéma du DataFrame

Parce qu’elle s’exécute côté Python et reste une boîte noire pour Catalyst

Explication

Une UDF Python s’exécute côté Python, et Catalyst ne peut pas analyser son contenu pour optimiser le plan. Les fonctions natives Spark SQL, elles, s’exécutent directement dans le moteur JVM.

12. Qu’est-ce que la SparkSession représente dans Spark 2.0 et versions suivantes ?

Le point d’entrée unique pour utiliser les fonctionnalités de Spark
Un composant chargé d’allouer les ressources du cluster
Un format de stockage distribué pour les données
Un moteur dédié uniquement au traitement des flux

Le point d’entrée unique pour utiliser les fonctionnalités de Spark

Explication

La SparkSession est devenue le point d’entrée unique pour accéder aux fonctionnalités de Spark. Elle remplace les anciens points d’entrée séparés pour SQL, DataFrames et autres API.

13. Quel composant regroupe plusieurs colonnes numériques dans une seule colonne de type vecteur ?

VectorAssembler
watermark
Pandas UDF
StringIndexer

VectorAssembler

Explication

VectorAssembler combine plusieurs colonnes en une seule colonne vectorielle, souvent nommée features. C’est la forme attendue par les algorithmes ML de Spark.

14. À quoi sert une variable broadcast dans Spark ?

À distribuer efficacement un objet à tous les nœuds sans le recopier à chaque tâche
À calculer un agrégat global à partir des partitions
À stocker les résultats d’une action sur le Driver
À transformer un RDD en plusieurs stages

À distribuer efficacement un objet à tous les nœuds sans le recopier à chaque tâche

Explication

Une variable broadcast permet d’envoyer une fois un objet partagé, comme un dictionnaire, à tous les nœuds. Cela évite de le recopier pour chaque tâche et réduit le trafic réseau.

15. Lequel des cinq V du Big Data correspond à la rapidité d’arrivée et de production des données ?

Vélocité
Volume
Variété
Véracité

Vélocité

Explication

La vélocité décrit la vitesse à laquelle les données sont générées et doivent être traitées. Le volume concerne la quantité totale de données.

16. Pourquoi Spark est-il souvent plus rapide que Hadoop MapReduce sur les traitements itératifs ?

Parce qu’il écrit systématiquement les résultats sur disque plus rapidement
Parce qu’il calcule en mémoire au lieu d’écrire sur disque à chaque étape
Parce qu’il n’utilise jamais de cluster distribué
Parce qu’il remplace les données structurées par des fichiers texte

Parce qu’il calcule en mémoire au lieu d’écrire sur disque à chaque étape

Explication

Spark accélère fortement les traitements itératifs en gardant les calculs en mémoire plutôt qu’en écrivant sur disque après chaque étape. C’est précisément ce changement de paradigme qui le différencie de MapReduce.

17. Quel algorithme regroupe des données similaires en k clusters sans variable label à prédire ?

KMeans
OneHotEncoder
LogisticRegression
RandomForestClassifier

KMeans

Explication

KMeans est un algorithme de clustering non supervisé qui partitionne les données en k groupes. Il ne repose pas sur une variable cible comme les algorithmes supervisés.

18. Quel algorithme est adapté à un problème de classification binaire en estimant une probabilité avant de décider une classe ?

LogisticRegression
KMeans
Régression linéaire
VectorAssembler

LogisticRegression

Explication

La régression logistique produit une probabilité d’appartenance à la classe 1, puis applique un seuil pour décider la classe. KMeans est non supervisé et ne prédit pas de label.

19. Que permet le lineage dans Spark lorsqu’une partition est perdue ?

Reconstruire les données à partir de l’historique des transformations
Partager une variable entre tous les workers
Convertir un RDD en DataFrame
Réécrire automatiquement toute la table de sortie

Reconstruire les données à partir de l’historique des transformations

Explication

Le lineage conserve l’historique des transformations d’un RDD, ce qui permet de reconstruire les partitions perdues. Il sert donc à la tolérance aux pannes.

20. Quel effet a une transformation paresseuse dans Spark ?

Elle déclenche immédiatement le calcul sur le cluster
Elle renvoie directement un résultat au Driver
Elle enregistre l’état du flux sur disque
Elle définit une logique de calcul sans exécution immédiate

Elle définit une logique de calcul sans exécution immédiate

Explication

Une transformation paresseuse est enregistrée dans le DAG sans lancer le calcul. L’exécution réelle est déclenchée plus tard par une action.

Révisez avec les flashcards

Mémorisez les réponses avec 20 flashcards sur Introduction à Spark et Big Data.

Big Data — caractéristiques principales ?

Volume, Vélocité, Variété, Véracité, Valeur

Écosystème Spark — composantes clés ?

Spark SQL, Spark Streaming, MLlib, GraphX

Architecture Spark — modèle ?

Master/Slave avec Driver, Cluster Manager, Executors

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Introduction à Spark et Big Data.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM