Dans le cours : L'essentiel d'Apache Spark

Utiliser les invites interactives

Maintenant que j'ai mes deux containers docker qui sont démarrés donc j'ai un pseudo cluster spark, je vais ici, avec SmarTTY ouvrir une deuxième session, je vais laisser celle-ci tourner de façon à ce que les containers continuent à fonctionner. Je vais aller dans le petit + ici, ouvrir sous forme de Tab une nouvelle session, et je vais utiliser dans la formation cette technique pour peut-être ouvrir différentes tabulations. Et ce qui m'intéresse, c'est de me connecter au master donc à un des deux containers qui est le master, de façon à pouvoir commencer quelques manipulations en utilisant les invites interactives de Spark. Donc je vais me connecter, ici je vais faire un coller de ma commande avec docker, je vais faire un docker exec dans, ici c'est le nom de mon container, donc dans le container du master, et je vais faire un bin/bash donc je vais ouvrir un interpréteur de commandes. Je vais le faire aussi d'ailleurs en sudo, parce qu'il faut que j'ai des permissions, docker a été installé en tant que route sur ce système, voilà, et je suis ici sur mon master, dans un répertoire dans lequel je vais trouver mon installation de Spark. Je peux accéder à Spark à travers différentes interfaces mais de façon interactive comme ça, j'ai deux interprétateurs différents. Je peux aller regarder dans bin ce qu'il y a à disposition. J'ai PySpark, comme son nom l'indique pour Pyhton et puis j'ai un spark-shell, qui est une interface Scala. Donc Scala est un langage qui tourne sur la JVM, donc qui est compatible et interopérable avec Java, et qui est un langage beaucoup plus facile à utiliser que Java. Qui a des paradigmes fonctionnels, qui a des paradigmes objet-orienté, qui ressemble un peu à un langage de script dans sa syntaxe, c'est-à-dire comme Python par exemple, une syntaxe beaucoup plus agréable à utiliser. Donc Spark est développé en Scala, il y a une interface Scala, on peut utiliser des programmes écrits en Scala ou Java ou en Python pour faire des programmes Spark mais en terme d'invites interactives, on va voir PySpark et puis spark-shell. Vous voyez qu'il y a d'autres commandes, spark-sql pour envoyer des commandes SQL, spark-submit pour exécuter des programmes déjà faits à l'intérieur de Spark, mais pour l'instant on va aller sur PySpark et spark-shell. Essayons PySpark. On a un niveau de log ici, qu'on peut changer avec un setLogLevel qui est un petit peu lourd peut être mais pour l'instant ça va. Et on a un interpréteur ici, PySpark, donc on a du Python. Une commande Python traditionnelle. On peut quitter, évidemment. Et j'y retourne. Donc on a vraiment le langage Python si vous êtes familiers avec Python à disposition avec, voyez, SparkSession available as 'spark' donc on a une SparkSession qui est déjà définie dans l'interpréteur, on n'a pas besoin d'ouvrir un contexte, d'ouvrir une session, il suffit d'utiliser Spark pour la session, c'est un objet de type SparkSession pour spark-sql. C'est avec ça qu'on va manipuler nos données sous forme de DataFrame par exemple, mais je vais y revenir, et puis on a un sc qui est un SparkContext, qu'on peut utiliser aussi pour créer des objets par exemple, et là, on est plus au bas niveau de Spark avec le contexte, on va pouvoir utiliser un certain nombre d'objets, avec la session, on va plutôt utiliser les fonctionnalités de spark-sql. Donc vous avez compris l'avantage de cette interface interactive, c'est que vous avez déjà un contexte ouvert dans Spark et vous pouvez jouer avec, sous forme de commandes pour récupérer des résultats interactifs. Même chose avec spark-shell. Donc ça prend un petit peu plus de temps parce qu'on est dans du Java et à peu près la même chose, on est ici en Scala. On a notre contexte, on a notre session. Vous voyez que ici, on est dans la hiérarchie d'objet directement dans Spark pour ouvrir un contexte. On est ici dans la hiérarchie d'objet sous spark-sql, pour manipuler des objets spark-sql, c'est déjà dit. Donc même chose, comment est-ce qu'on quitte ? On a un certain nombre de commandes qui, dans cet interpréteur commencent par « : », vous pouvez utiliser :help pour avoir la liste de vos commandes. Par exemple, voir l'historique des commandes. Alors dans cet interpréteur vous pouvez faire flèche vers le haut, flèche vers le bas, pour naviguer dans l'historique des commandes, comme dans un interpréteur de commandes traditionnel et donc vous pouvez charger un fichier qui contient déjà des lignes de commandes pour exécuter un script. Vous avez :quit, vous pouvez sauvegarder une session dans un fichier, etc. On va faire :quit et nous voici de retour. Pour une méthode un peu plus brutale, Ctrl+C qui quitte également. Mais je vous recommande, là je vais faire un clear pour enlever tout ça, je vous recommande d'utiliser :quit, c'est quand même plus propre.

Table des matières