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

Calculer des occurrences de mots

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Tirez parti des notions que vous venez d'acquérir pour compter les occurrences de mots dans le contenu de votre RDD.
06:48

Transcription

Maintenant, je me dis, vous avez tout compris. On pourra utiliser des transformations, des fonctionnalités, des objets, par exemple en Scala, l'objet string, des transformations, des actions, pour faire à peu près tout ce qu'on veux finalement avec Spark, qui est une sorte d'interpréteur de langage avec un certain nombre de fonctionnalités sur des objets, comme le RDD, et qui a la capacité de paralléliser, de distribuer ce traitement. Donc vous voyez la puissance de l'outil. Un ou deux derniers exemples. Si je reprends ma syntaxe, et je la simplifie, j'ai donc mon split ici, je vais enlever tout ça, j'arrive à un RDD qui a été « flatMapé » on pourrait dire, donc un RDD qui contient une liste de mots. Comment pourrais-je filtrer ? Eh bien je pourrais utiliser une transformation qui s'appelle Filter, c'est une transformation parce qu'elle va retourner un RDD avec seulement les éléments qui m'intéressent, comment est-ce que je filtre ? Comment est-ce que j'envoie des paramètres ou des clauses de filtres ? Eh bien une fois de plus en envoyant une expression lambda, une fonction qui va évaluer chaque élément comme je veux. Par exemple, je peux dire je vais prendre un mot, « word », et puis je vais dire « word » doit, par exemple contenir, et je vais utiliser des méthodes de l'objet string, contains, et puis je vais dire il faut que ça contienne  « table », par exemple. Ici c'est plutôt W bien entendu, et je peux, bien entendu, simplifier comme ceci. Vous voyez la compacité de l'expression, c'est quand même très intéressant. Maintenant que j'ai tout ça je vais faire un petit take(10) pour voir ce que j'ai, effectivement « véritable, table », tout va bien, « table virgule, table point ». Dans mon split, il faudrait que j'enlève bien entendu les signes de ponctuation ici, « connétable », avec une virgule et pour ça c'est pas très compliqué, donc je reprend tout ceci, j'ai un flatMap, j'ai un split. Alors je suis en train de réfléchir, est-ce que je fais ma suppression ici ou là, donc je vais utiliser un map, une transformation entre les deux. Dans mon map, on passe directement à cette syntaxe, donc j'ai ici des chaînes de caractères. En Java il y a une méthode qui s'appelle « replaceAll » sur un string, qui va permettre de définir d'abord une expression rationnelle, je vais dire il faut que tu me remplaces la virgule, le point, et je vais indiquer que ce sont des caractères littéraux qu'il faut sélectionner, et je vais dire remplace-moi ça par des chaînes vides. Alors il va falloir commencer à compter ses parenthèses, voilà. Ça m'a l'air pas mal, on va faire un petit essai. Alors je n'ai ici peut-être pas besoin de faire ça, effectivement, je n'avais pas besoin d'échapper dans mon expression rationnelle. Donc ce que ça veut dire ici c'est avec mes crochets, n'importe quel élément de ce groupe, donc on va remplacer tout ce qu'on trouve, des virgules ou des points par des chaînes vides. Et là c'est un petit mieux. Donc je me répète une dernière fois, vous avez compris, j'aligne des transformations jusqu'à l'action finale et tout ceci va être exécuté en une seule fois par Spark bien entendu. Alors je pourrais ici refaire un distinct pour avoir une liste distincte de mes mots mais je vais faire quelque chose de différent, je voudrais savoir combien il y a d'occurrences de chaque mot dans mes documents. Donc il faudrait que je retourne maintenant, non pas une liste de chaîne, mais une liste de paire clé/valeur, n'est-ce pas ? Il faudrait que j'aie pour chaque mot, qui serait la clé, une valeur, qui serait le nombre d'occurrences trouvées. Est-ce qu'on peut faire ça ? Bien sûr qu'on peut faire ça. Je garde mon contains ici, je garde mon filtre, je ne veux travailler que sur les mots qui contiennent le mot « table », et je vais utiliser une transformation qui s'appelle reduceByKey. ReduceByKey, c'est une transformation parce qu'elle va me retourner un RDD de paire clé/valeur. Mais ces clés/valeurs, il va falloir que je les génère avant de faire le reduce. C'est-à-dire que le reduceByKey va prendre en entrée un RDD déjà de paire clé/valeur, donc il faut que je les fabrique. Je vais les fabriquer ici, d'abord en faisant un map. Donc je vais utiliser la syntaxe de Scala, je vais dire : il me faut ça, et ça. Alors bon, peut-être que ce serait plus lisible si je vous fais une syntaxe lambda plus classique, je vais dire : pour chaque mot, tu me retournes une paire clé/valeur qui consiste en le mot lui-même et la valeur littérale 1, ce qui me fait un RDD qui contient le mot et juste le nombre un. Ce qui fait qu'ensuite je vais faire une réduction pour trouver la somme des nombres un pour chaque mot. Donc je peux l'exprimer plus simplement comme ça. Je vais faire un take(10) pour voir si tout va bien. Voyez, ça me paraît pas mal, (table, 1), (table, 1), (connétable, 1), etc. Il ne me reste plus qu'à réduire ceci, donc je vais faire un reduceByKey sur ce RDD. Donc reduceByKey c'est une transformation, c'est une méthode d'un RDD spécifique qui est un RDD de paire clé/valeur. C'est un type particulier dans Spark. Et je vais faire un reduceByKey, alors le plus simple, avec ma syntaxe Scala c'est ça, plus ça. ReduceByKey sait qu'il doit prendre les clés, et il va faire une réduction des valeurs, donc ce que je suis en train de dire c'est « Accumule-moi les valeurs et retourne moi un RDD de paire clé/valeur où la clé va être unique, et ensuite on aura réduit les différentes valeurs des clés qu'on aura trouvées en double. Je vous fais un take(10) de ça pour vous montrer le résultat. Ah, j'ai oublié d'enlever les signes de guillemets, je pourrais faire ça, les points d'interrogations, bref, mais je vois que j'ai par exemple « véritable » 31 fois, « contestable », « insupportable » 4 fois, etc. Donc vous voyez qu'en alignant nos différentes transformations on peut arriver à faire à peu près tout ce qu'on veut.

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 !