Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

L'essentiel d'Apache Spark

Manipuler le DataFrame

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Vous pouvez manipuler le DataFrame en utilisant des transformations et des actions très proches de celles du RDD.
07:22

Transcription

J'ai donc mon DataFrame qui contient mes cepages. Ils sont correctement nommées, les colonnes sont correctement nommées, qu'est-ce que je peux faire avec ? Eh bien, le DataFrame, comme le RDD, a les mêmes concepts de transformation et d'action. Les actions que vous connaissez déjà maintenant sur le RDD sont aussi disponibles sur le DataFrame, je peux faire un df.collect() par exemple, qui va me retourner une liste, en Python ici, je suis en PySpark, de Row. Je peux faire également un take des 10 premiers. Ça me retourne toujours une liste de Row. Je peux évidemment faire un first. Bref, rien de particulier. Donc vous voyez, chaque fois, ça me retourne des éléments qui sont des Row, puisque je suis dans un DataFrame qui est un Dataset de Row. Le first peut aussi s'exprimer, c'est comme vous aimez, avec la méthode head, donc c'est une action qui fait la même chose. Bon, c'est comme vous aimez. Vous pouvez récupérer un de ces éléments, vous avez des Row, c'est reconnu dans PySpark comme étant manipulable, donc je peux faire un head de seulement la couleur par exemple. Aucun problème. Vous voyez que ça devient beaucoup plus manipulable parce qu'on peut maintenant manipuler directement quelque chose de typé, avec des propriétés. Et je peux faire un count bien entendu, bref, ça, vous connaissez, on a à disposition les mêmes types d'actions. On a les transformations qui sont disponible également. En terme de transformations, le DataFrame va plutôt réagir avec des expressions plutôt que des fonctions anonymes, du lambda, alors, je m'explique : On est ici plus dans une approche de développement par expression, ou déclaratif, que dans une approche fonctionnelle. Vous avez la possibilité, selon le langage que vous utilisez, de continuer à avoir une approche fonctionnelle, en faisant une lambda par exemple. Mais en PySpark, par exemple, ce sera pas possible, bon, je vous montre. Admettons que veuille filtrer mon DataFrame. J'ai donc toujours une transformation qui s'appelle filter, et est-ce que je fais une lambda ? Par exemple, on va dire que c'est un Row, et donc je veux que Row, alors justement, je vais chercher quoi ? Par exemple, je ne veux que les cepages de rouge. Alors, où est-ce que je vais chercher ça ? Bien, puisque je peux manipuler mon DataFrame et chaque Row, que chaque Row a des colonnes qui sont connues, eh bien, c'est beaucoup plus facile de l'exprimer maintenant, parce que je peux dire la couleur doit être égale à, ou en syntaxe Python, par exemple, « "R" in r.couleur. » Comme c'est une transformation, ça va me retourner à nouveau DataFrame, on est d'accord, on ne pense plus en RDD, on pense en DataFrame, mais le principe de la transformation reste le même. Je prends un DataFrame, je le transforme, ça devient un autre DataFrame, et puis on est lazy également, c'est-à-dire que transformation après transformation, lorsque j'arrive à faire une action à la fin, toute la logique d'exécution va se mettre en place, il va y avoir un interne dans Spark, un plan logique d'exécution. Est-ce que ça marche ? On m'envoie bouler en me disant : « conditions should be string or column. » On me dit, non, non, il te faut une condition. Et si je regarde dans la documentation de Spark, en allant ici sur le Dataset, en sachant qu'il n'y a plus vraiment de documentation sur le DataFrame, on a une documentation sur le Dataset, qui est donc l'ancêtre si vous voulez du DataFrame, le DataFrame c'est un type de Dataset, OK. Si je cherche, je vois ici que j'ai mes actions, mes fonctions, mes transformations. Vous voyez que les transformations retournent maintenant à Dataset de T. Si c'est un DataFrame, ça retourne donc à Dataset de Row, on est d'accord. Eh bien, je vais regarder dans filter, j'ai plusieurs versions de filter, je peux envoyer des fonctions, mais on me dit attention, c'est Java-specific. OK, je peux envoyer ici une lambda, mais on me dit non, non, non, attention, c'est Scala-specific, OK d'accord. Et en plus c'est expérimental, on me dit, bon d'accord. Donc, qu'est-ce que je fais ? Eh bien, une expression. Par exemple ceci. Vous pourriez vous dire, c'est comme si je prends du langage SQL, on va voir un peu l'intégration de SparkSQL avec le langage SQL, mais c'est comme si je prends le critère de la clause ware de mon instruction SQL, et puis, je l'utilise comme expression directement dans le filtre, ou je peux utiliser ici directement une condition avec une colonne, comme ceci. Donc, je peux soit écrire une expression sous forme de chaîne, soit utiliser une condition avec la colonne, et ça, c'est pas du tout spécifique à un langage, c'est pour tous les langages, on va de préférence utiliser ça finalement, et dans PySpark, c'est la seule chose qui est supportée. Alors, on y va on fait ça, non, non, non, on ne va pas l'écrire comme ça, on va dire bon d'accord, alors « (r couleur... == "R") », je veux du rouge. Et non, suis-je bête, c'est pas r couleur, r n'existe pas, on est d'accord, parce que r c'était dans mon lambda, c'était le nom du paramètre que j'avais créé, donc on recommence tout, ben alors, qu'est-ce qu'on met ici ? Couleur seulement ? Ben non, on va référencer notre DataFrame, et on retourne puisque c'est une transformation à nouveau DataFrame. Bon, j'aimerais bien avoir le résultat. Je pourrais faire un collect() par exemple, très bien. Ce n'est pas très beau. On travaille ici, en tout cas on est sensé travailler avec des DataFrame qui sont des représentations sous forme de tables, ligne et colonnes, est-ce que je pourrais pas avoir quelque chose comme dans MySQL par exemple, une table qui s'affiche. Mais si bien sûr, parce que vous avez sur un Dataset et un DataFrame la méthode show qui vous formate les choses correctement. Et voilà. Vous travaillez avec Spark, avec vos DataFrame, vos Dataset, presque comme dans un moteur SQL. Vous allez utiliser des expressions, et vous allez récupérer des tables, en tout cas des représentations de DataFrame ou Dataset sous forme de tables, vous voyez l'intérêt, les gens qui ont l'habitude de travailler avec des outils plutôt SQL, se sentent vraiment à l'aise avec un travail dans Spark, et donc, les data scientists peuvent utiliser relativement facilement Spark en apprenant un petit peu le langage, en utilisant Python ou Scala pour leurs tâches au quotidien d'analyse des données interactives, requête ad-hoc, analyses un peu expérimentales des données ou cherchant petit à petit ce qu'ils veulent obtenir de leurs données.

L'essentiel d'Apache Spark

Analysez des données volumineuses avec Apache Spark. Chargez vos données pour les analyser, profitez des opérations de transformation et des actions pour agréger vos données, etc.

3h11 (38 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :16 mars 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !