Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

L'essentiel d'Apache Spark

Employer la syntaxe select

Testez gratuitement nos 1341 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous pouvez utiliser plusieurs variantes de la syntaxe de méthode select pour appliquer une projection sur votre DataFrame.
06:16

Transcription

Il est temps de voir la syntaxe SQL, elle-même, de Spark SQL. On peut faire des selects de deux manières. On peut continuer à utiliser la syntaxe en méthode, la syntaxe du dsl, du domain-specific language. C'est un terme un peu barbare qui veut dire qu'on a un langage spécifique à un domaine particulier, c'est-à-dire ici au requêtage de nos données mais on peut l'appeler aussi plus simplement une syntaxe sous forme de méthode. Je peux très bien prendre mon DataFrame et utiliser une méthode Select dessus comme ceci pour dire que je veux sélectionner. Juste avant, pour que je me souvienne du schéma, vous avez aussi une méthode qui s'appelle PrintSchema comme ceci, on est en Scala, qui va vous retourner une représentation assez simple et complexe du schéma. Donc je sais que j'ai code, nom, type_commune population avec mes types de données. J'en reviens à mon Select, je peux faire directement un Select comme ceci, je vais sélectionner quoi ? Il y a deux façons d'appeler cette méthode, soit je peux dire : trouve-moi des objets colonnes à ce moment-là, je vais les mentionner comme ceci et, avec des virgules, je mets les colonnes qui m'intéressent, par exemple le code et la population. C'est une transformation donc ça me retourne à nouveau DataFrame donc je vais le passer à travers une action pour voir quelque chose. Et voilà un vrai Select, mais qui fait quoi ? Il fait une projection, une opération de l'algèbre relationnel. Une projection, c'est : je prends ma table et je ne conserve que quelques colonnes. C'est exactement ce que j'ai fait ici, j'ai conservé le code et la population. Donc tout va bien. Si on prend l'aide du DataFrame, une fois de plus du Dataset puisque le DataFrame est basé sur le Dataset, on voit qu'on a Select avec colonnes ou colonnes qui sont des string ou, ici, des colonnes. C'est exactement ce que je viens de faire. J'ai utilisé un objet Spark SQL colonnes en définition mais je peux aussi utiliser des chaînes de caractères, c'est ce que je vais faire. Au lieu de spécifier co, je peux très simplement spécifier ceci. C'est donc l'autre surcharge de cette méthode Select. C'est peut-être plus simple à écrire, n'est-ce pas ? Notez que vous ne pouvez pas mélanger les deux, vous ne pouvez pas faire ça parce que, comme vous l'avez vu dans la signature des méthodes, soit il veut des chaînes, soit il veut des objets colonnes mais je ne peux pas avoir une méthode avec une chaîne et un objet colonne ensuite. C'est juste pour vous prévenir, ce n'est pas très grave mais vous choisissez votre camp ! Ce que vous pouvez faire également, ça ne sert pas à grand-chose certes, c'est utiliser l'étoile, ici, bien entendu comme dans du vrai SQL. Cela ne sert pas à grand-chose, pourquoi ? Parce qu'il suffirait finalement de ne pas faire le Select et de faire le Show directement. Par contre, vous ne pouvez pas faire un Select chaîne vide. On me dit " non, pas vraiment, pas vraiment ". Autre question, si je refais un Select étoile et je vois que mon type de commune c'est N ou R. Qu'est-ce que cela veut dire ? Je vais aller regarder dans la description du format Fantoire, au niveau de la commune et on me dit ici type de commune : N rurale R recensée. Comprenne qui pourra... mais on va essayer d'afficher quelque chose de correct. Comment va-t-on faire ici ? Est-ce que je peux faire quelque chose comme ça ? Je reviens sur ma population, est-ce que je peux utiliser un If de Scala ? Quelque chose comme ça : If co_population est égale à N...etc... Je ne vais pas plus loin parce que vous vous doutez certainement que ce n'est pas vraiment possible. Cette méthode me demande soit des colonnes, soit des strings, là ce n'est ni une colonne ni une string, c'est une expression. On va donc s'en passer. Par contre comment faire ? En utilisant ma syntaxe de chaîne, ici, je peux mettre des expressions mais seulement si ..... Un peu de suspens. Une expression, dans un Select en SQL, c'est quelque chose qui va calculer un résultat. Par exemple, dans le langage SQL, on a une structure qui s'appelle Case donc on peut faire : Case type_commune on va faire un When : quand c'est égal à N then je vais afficher Rural (J'affiche Rural comme ceci, c'est un type) Else recenser, comme ceci, end. Voilà une expression qui fonctionne en SQL Est-ce que ça va marcher ? Non, on me dit que quelque chose ne va pas. Si je reviens à ma documentation et si je regarde bien, je vois que j'ai Select_expr et que je peux mettre des chaînes qui consistent en une liste d'expressions. J'ai d'ailleurs un exemple ici : expression, et je peux créer des objets expression ou je peux utiliser des expressions sous forme de chaînes. Par exemple, ici, as new name donc on a fait un alias, ici on utilise une fonction du SQL qui est valeur absolue donc il me suffit de changer mon Select en Select-Expr pour avoir quelque chose de bien. Il y a une chose que j'ai oublié de faire, c'est de faire un alias, ça, ce n'est vraiment pas beau. On va faire as type, par exemple, qui est beaucoup mieux.

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 !