Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases de Spark

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de conteneurs7 min de lecture5 commandes

Ce que tu vas faire

Apache Spark sert à travailler sur des tables de données trop grosses pour un seul programme, en découpant le travail en jobs (des travaux). Un DataFrame est le nom que Spark donne à une table. Tu peux l'interroger avec du code ou avec du SQL. Ton lab contient un petit Spark et un fichier de 24 achats (orders en anglais). Tu vas le regarder, le filtrer, grouper et compter, poser le même genre de question en SQL, puis retrouver le travail dans l'interface de Spark (Spark UI).

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de la leçon et attends qu'il indique qu'il est en marche. Il y a un seul conteneur, spark, et le terminal l'atteint par ce nom sur le port 8000. Le lien Spark UI ouvre sa page web, sur le port 4040. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l'une après l'autre, dans la même session. Pour suivre les commandes ou taper les tiennes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.

1. Regarde les données

Spark a lu orders.csv dans une table nommée orders. Cette question SQL en demande cinq lignes. La réponse est une table dont la première ligne est l'achat 1001, Ada, du UK, deux claviers à 25.0. La commande curl envoie ta question au service de requêtes du lab et affiche la réponse.

Commande
curl -s -d 'SELECT * FROM orders LIMIT 5' http://spark:8000/sql

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

2. Filtre avec un DataFrame

La même table est un DataFrame nommé orders, et filter garde les lignes qui correspondent. Ici, on garde les achats du UK : la réponse est une table de sept lignes. La deuxième commande compte toutes les lignes et affiche 24.

Commande
curl -s -d 'orders.filter(orders.country == "UK")' http://spark:8000/df

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
curl -s -d 'orders.count()' http://spark:8000/df

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

3. Groupe et compte

groupBy rassemble les lignes qui ont le même pays, et count compte chaque groupe. La réponse a quatre lignes : UK 7, Japan 6, France 6 et Spain 5. Elles peuvent arriver dans un autre ordre, car Spark ne promet aucun ordre tant que tu n'en demandes pas un.

Commande
curl -s -d 'orders.groupBy("country").count()' http://spark:8000/df

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

4. Pose la question en SQL

Le même genre de question en SQL : le chiffre d'affaires de chaque pays, c'est la quantité multipliée par le prix unitaire, le tout additionné, du plus grand au plus petit. En tête, Japan avec 717.5, puis le UK avec 670.0, France 495.0 et Spain 490.0. Spark transforme le SQL et le code DataFrame en plans du même genre.

Commande
curl -s -d 'SELECT country, round(sum(quantity * unit_price), 2) AS revenue FROM orders GROUP BY country ORDER BY revenue DESC' http://spark:8000/sql

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

5. Retrouve le travail dans Spark UI

Ouvre Spark UI dans ton navigateur, avec le lien de la barre en haut de la leçon. L'onglet Jobs liste le travail que Spark a fait pour tes questions. L'onglet SQL / DataFrame liste chaque requête avec le plan qui l'a exécutée. Relance une étape et regarde un nouveau job apparaître. C'est de cette page que tu fais une capture d'écran quand tu rends ta propre requête.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Le lab est un seul service et rien ici ne se corrige tout seul : l'élève rend le résultat d'une requête de son choix, une capture d'écran de cette requête dans Spark UI et une phrase sur ce que Spark a fait. C'est Spark en mode local, pas un cluster, et les données tiennent en 24 lignes : la leçon enseigne donc les DataFrames et le SQL, pas le passage à l'échelle. Copiez-la dans votre propre module et modifiez-la, ou créez-en une de zéro avec le menu Lab du créateur de leçons.

À propos de ce labo et de sa source: Lab Apache Spark : apprendre les DataFrames et Spark SQL sur un fichier CSV

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.