L'essentiel d'Apache Spark

Appréhender les abstractions de données de Spark 2

Testez gratuitement nos 1271 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Les abstractions de données ayant évolué avec Spark 2, voyez comment le DataFrame et le Dataset prennent le pas sur le RDD.
06:01

Transcription

J'ai une petite surprise pour vous, mais je vais vous la garder pour le milieu de cette vidéo. Résumons. On a beaucoup utilisé le RDD. Le RDD c'est quelque chose qui a été créée. En 2011, à la naissance de Spark, c'est vraiment l'abstraction de données principales et historiques de Spark. Peut être que vous me voyez un peu arriver. C'est une collection de données, collection distribuée. Et on a vu qu'on pouvait appliquer des opérateurs fonctionnels. Par exemple on a fait un map et on a passé une fonction à l'intérieur, donc c'est une approche réellement fonctionnelle, c'est-à-dire, dans les langages fonctionnels on s'en voit des fonctions, on fait des appels de fonctions avec des fonctions qui sont bien délimitées les unes les autre sans réellement avoir un état global. Le RDD n'a pas de schéma en tant que tel. On l'a utilisé pour une liste de lignes, donc tu texte, quelque chose qui est vraiment peu structurée. On l'a pas du tout utilisé, par exemple, pour représenter une table avec des lignes et des colonnes, quelque chose de bien structuré avec un schéma assez précis. Donc il n'y a pas de schéma dans le RDD. Pendant le développement de Spark, l'autre abstraction qui est née est une abstraction qui s'appelle le DataFrame. DataFrame ça sonne déjà un peu plus comme une table. Et effectivement, le DataFrame c'est l'abstraction principale de Spark SQL, parce que quand on fait du SQL, on le fait sur quelque chose qui ressemble à une table. Il faut qu'il y ait des lignes et des colonnes. Et en 2013, lorsque Spark SQL a atteint sa maturité, remplacement de SHARK ou chose plus anciennes, le DataFrame est devenu une abstraction de données très intéressante. D'abord parce qu'elle a une représentation interne qui est optimisée, et c'est plus rapide que le RDD dans beaucoup de cas. Pratiquement dans tout les cas. Et c'est une représentation qui est plus structurée en lignes et en colonnes. En termes de performance, si je me rends sur une entrée de blog sur le site Databricks qui est une entreprise qui fait son business autour de Spark, voici un petit exemple de test de performance. En utilisant des RDD en Python ou en Scala, Voici les performances aux quelles on arrive sur l'agrégation de 10 millions de pairs d'entiers. Donc on est en terme de secondes. Vous voyez que Scala est largement plus rapide que Python, mais lorsqu'on travaille avec des DF, des DataFrame, on arrive à des bien meilleures performances sur ces opérations que ce soit en Python ou en Scala. Donc le DataFrame est une structure optimisée. Et ça va donc dans le sens de travailler plus avec une interface genre SQL pour Spark, et on a donc une approche plutôt déclarative sur le DataFrame. Revenons-en à la surprise annoncée. Qu'est ce qui s'est passé à la sortie de Spark 2 assez récemment ? Les abstractions de données pour Spark 2 sont toujours le RDD, le RDD existe, mais on a vu que là, on va réfléchir à deux fois par rapport aux performances qu'on a vues. On va plutôt utiliser un DataFrame. Mais le DataFrame est devenu quelque chose d'autre. Il y a un autre concept, on va dire plus large qui s'appelle le Dataset et qui inclut le DataFrame. Donc le Dataset est une nouvelle abstraction de données qui est née avec Spark 2. Le Dataset est né en 2015 et il est typé. C'est un Dataset [T]. Ce que ça veut dire, c'est que le T qui est représenté ici, qu'on appelle un générique dans un certain nombre de langages de programmation, c'est la capacité de faire une collection, donc un Dataset de type T, ça représente un type. Ça veut dire quoi un type ? Une classe de votre langage, une classe, en l'occurrence ici de la JVM. On a donc des objets JVM. Je vais créer une classe avec un certain nombre de propriétés. Ça va représenter un type de données particulier et je vais donc faire un Dataset de ce type de données. Quel est l'avantage ? Eh bien, je vais pouvoir travailler avec des expressions. Je vais être type « safe » comme on dit. Lorsque Spark va exécuter mon code, et même lorsque Spark va compiler, comprendre mon code, j'aurais un type, une classe existante que j'aurai déjà déclaré dans mon langage. Je vais donc connaître toutes ses propriétés. Je vais pouvoir travailler avec un Dataset typé, avec une collection d'objets dont je connais déjà au moment de la programmation la structure, et donc je vais pouvoir créer des expressions pour dire par exemple; filtre-moi par telle ou telle propriété de ma classe. Je commence à pouvoir travailler avec des données qui sont bien structurées. Une structure et un schéma connu, et c'est beaucoup plus pratique de travailler avec cette structure dans un langage, ça s'approche de la connaissance qu'on peut avoir du schéma explicitement quand on fait du SQL. Donc le DataFrame ça devient... C'est toujours créée en 2013, mais disons qu'il a évolué pour être quelque chose de légèrement différent, c'est un Dataset, mais d'un type particulier qui s'appelle « row ». On pourrait dire que c'est une --- non typée du Dataset. Donc sois vous travaillez avec un Dataset et vous le typez, sois vous travaillez avec un DataFrame et en interne, c'est un Dataset [row]. Row est un objet de base de Spark qui n'est pas typé, avec lequel on va travailler dans une forme non typée. Ça reste la méthode la plus rapide parce qu'en interne, le Dataset [row] a un certain nombre d'optimisations, de la compression, une compilation en JIT ( Just In Time), ça veut dire que la JVM va compiler les objets, compiler le code, et ensuite l'exécuter dans un code beaucoup plus rapide que si on devait l'interpréter. Donc le DataFrame reste le plus rapide. Et en plus, si vous l'utilisez en PySpark, le DataFrame reste mieux supporté pour l'instant que le Dataset.

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 !