La toute nouvelle certification de développeur Spark de Databricks (CRT020: Databricks Certified Associate Developer for Apache Spark 2.4 with Scala 2.11 – Assessment) est disponible depuis le 1er août 2019. Ayant obtenu cette certification récemment, je vous partage maintenant mon retour d’expérience. Je vous donne également quelques conseils pour préparer l’examen au cas où vous envisageriez de le passer. J'espère que ce feedback vous permettra de le réussir en toute sérénité.
J’ai passé la certification Spark avec Scala, celle avec Python est sans doute très similaire.
Contenu de l’examen
L’examen est composé de 38 épreuves sélectionnées aléatoirement : 19 questions à choix unique (QCU) et 19 coding challenges. Comme l’indique la notice de l’examen, les épreuves sont pondérées par leur niveau de difficulté dans le calcul du score total. La formule et les coefficients de pondération ne sont pas révélés.
Pour réussir l’examen, il est nécessaire d’obtenir un score supérieur à 70%.
QCU
Les questions ont pour objectif de valider votre niveau de compréhension du fonctionnement de Spark et votre maîtrise de sa terminologie.
Pour chaque question, vous avez à choisir une des quatre réponses proposées. Les questions ne sont pas triées par niveau de difficulté. Il n’y a pas d’obligation d’y répondre dans l’ordre non plus. Vous pouvez à tout moment revenir à une question que vous avez déjà traitée et soumettre une autre réponse.
La plupart des questions de mon examen peuvent être regroupées dans les trois catégories suivantes :
- Trouver un intrus parmi 4 affirmations sur le fonctionnement de Spark,
- Identifier le bon terme par sa description,
- Parmi 4 configurations du cluster (même cluster physique divisé en 1, 2, 4 ou 8 executors) identifier la plus favorable à produire un certain effet.
Il est préférable de ne pas trop s’attarder sur les QCUs, je vous conseille de ne pas passer plus de 30 minutes dessus pour vous laisser plus de temps pour les coding challenges, qui sont beaucoup plus chronophages.
Coding challenges
Les épreuves de coding ont pour objectif de valider votre niveau de maitrise de l’API DataFrame et des différents readers et writers. Aucune épreuve de mon examen n’a exigé l’utilisation de RDD ni de Dataset. Il n’y avait pas non plus de coding challenges sur Spark ML ni sur le Structured Streaming.
Toutes les épreuves de mon examen ont pu être résolues avec très peu de code en utilisant les outils les plus adaptés. Si vous envisagez d’écrire beaucoup de code ou d’utiliser les fonctionnalités avancées de Scala, vous n’êtes probablement pas sur la bonne piste.
Tout comme les QCUs, les coding challenges ne sont pas triés par niveau de difficulté. J’ai eu le plus facile en dernier. Il n’est donc pas judicieux de rester bloqué sur une épreuve qui vous semble compliquée. Vous pouvez passer à la suivante et revenir à celle mise de côté plus tard.
Les épreuves sont à réaliser sur le Notebook de Databricks. Le Notebook n’a pas d'auto-complétion ni de suggestions d’import. Afin de pouvoir exécuter votre code, il faut attacher le cluster au Notebook et lancer le script d’initialisation de l'environnement. Ces opérations sont à répéter pour chaque épreuve.
Chaque coding challenge consiste en l’implémentation d’une méthode dont la signature est fournie. Les méthodes permettant de visualiser les résultats sont déjà implémentées, ce qui vous donne la possibilité d’afficher vos résultats intermédiaires. Vous n’avez donc qu’à remplir la méthode jusqu’à ce que les résultats retournés correspondent aux résultats attendus.
Certaines épreuves sont composées de plusieurs tâches avec plusieurs résultats à retourner par la méthode dans un tuple.
Une fois que vous avez obtenu les résultats souhaités, vous pouvez les vérifier en lançant le script de validation (plus bas dans le Notebook). Vous pouvez lancer le script de validation autant de fois que vous voulez.
Le tutoriel indique que le code qui ne compile pas ne vous apporte aucun point.
Pré-requis
Databricks fait appel à la plateforme ProctorU pour planifier et encadrer les sessions d’examens individuels en ligne. Vous pouvez trouver l’ensemble des pré-requis de la plateforme ici.
Les examinateurs de ProctorU étant aux États-Unis, le créneau disponible est ainsi entre 14h et 2h (5:00 AM - 05:00 PM Pacific Time), tous les jours, y compris les weekends.
Vous avez besoin d’une connexion Internet stable avec une bonne bande passante afin de transmettre la vidéo de votre Webcam et de votre écran sans interruption à l'examinateur. Vous pouvez tester votre environnement en suivant ce lien.
Déroulement de l'examen
Tout d’abord, il est nécessaire de se prendre en photo avec la Webcam, photographier sa pièce d’identité, saisir un texte, télécharger et lancer une application de ProctorU. Cette application qui vous permettra de prendre contact avec votre examinateur par chat et appel vidéo, ainsi que partager votre écran et lui donner la main sur votre poste. Soyez prêt à communiquer en anglais avec un américain.
L'examinateur vous demandera de poser votre téléphone à un endroit derrière vous, visible dans la caméra. Il vous demandera également de lui montrer l’ensemble de la pièce où vous vous trouvez, pour s’assurer que vous y êtes seul et que vous ne disposez d’aucunes sources d’information ni de communication.
L'examinateur prendra la main sur votre poste afin de vérifier que vous n’avez aucune application ouverte, désactivera les screenshots et démarrera votre session. Il ouvrira une fenêtre de navigation privée avec 4 onglets : 3 sites de documentation autorisés et 1 onglet avec l’examen.
L’examen est prévu pour une durée de 3 heures environ. Il n’y a pas d’obligation de respecter ce timing à la minute près. Vous pouvez donc potentiellement le dépasser si vous en avez besoin. En comptant en plus le temps nécessaire pour démarrer la session en toute conformité, il faut prévoir un créneau de 4 heures. Vous n’avez pas le droit de vous absenter durant tout l'examen.
Pendant l'examen vous avez le droit de vous servir de trois sites de documentation : Apache Spark, la documentation Databricks et un site de documentation Scala dont je n’ai pas retenu l’URL. La documentation de Scala n’est pas de grande utilité pendant l’examen car les épreuves ne nécessitent que les connaissances les plus basiques de ce langage. En revanche, en absence de l’assistance de mon IDE préféré, je me suis beaucoup servi de la documentation de l’API Scala de Spark.
Comment se préparer ?
A mon avis, la meilleure façon d'appréhender Spark est de lire attentivement le livre “Spark: The Definitive Guide” de O’Reilly, tout en mettant en pratique les exemples de code disponibles sur Github avec des échantillons de données. Pour cette certification en particulier, il suffit de bien assimiler les parties I, II et IV de ce livre.
Le livre n’est pas exhaustif sur les fonctions de transformation disponibles dans Spark pour deux raisons :
- elles sont très nombreuses,
- le livre était écrit à l’époque de Spark 2.2, de nouvelles fonctions ont été ajoutées dans les versions 2.3 et 2.4.
Je vous conseille donc de compléter les exercices du livre par des exercices que vous pouvez inventer vous-même sur chaque fonction disponible dans org.apache.spark.sql.functions. Je trouve qu’inventer des exercices est un moyen particulièrement efficace pour bien comprendre et mémoriser chaque fonction et le besoin auquel elle répond.
Prenez le temps de jouer avec les readers et writers du Spark Core (JSON, CSV, Parquet, ORC, JDBC, Avro). Mettez en pratique l’utilisation de leurs options.
Afin de vous mettre en condition d’examen, faites les exercices sans assistance d’un IDE en n’utilisant que les sites de documentation autorisés.
Vous pouvez exécuter le code en mode local (sans cluster) avec spark-shell ou en configurant un projet Maven ou sbt avec Spark. Il est également possible d’utiliser la version gratuite de la plateforme Databricks (je n’ai jamais réussi à obtenir l’accès).
Conclusion
Maintenant que j’ai démystifié la nouvelle certification de Databricks, vous savez désormais à quoi vous attendre et comment vous y préparer. À vous de décider si vous en avez besoin et planifier votre session !