Vous êtes sur la page 1sur 6

Cours Big Data – Chapitre III Niveau : 3ème année

Resilient Distributed Dataset


 Les RDD permettent de réarranger les calculs et d’optimiser
le traitement.

 Les RDD sont reconstructibles : ils sont tolérants aux


pannes car un RDD sait comment recréer et recalculer son
ensemble de données.

 Les RDD sont immuables. Pour obtenir une modification


d’un RDD, il faut y appliquer une transformation, qui
retournera un nouveau RDD, l’original restera inchangé.

28

28

Resilient Distributed Dataset


 Spark supporte les évaluations paresseuses (Lazy
evaluation) des requêtes c’est-à-dire que les transformations ne
s’exécutent sur le cluster que si on en a besoin (une action est
invoquée).

 Il est possible de demander la persistance d’un RDD :


chargement en mémoire du RDD pour le réutiliser en cas de
besoin au lieu de refaire la transformation.

Voir exemples à l’url suivante :


http://b3d.bdpedia.fr/spark-batch.html

29

29

Enseignante : R. CHEBIL 1
Cours Big Data – Chapitre III Niveau : 3ème année

DataFrames
2011 RDD :
◦ Collection distribuée
◦ Opérateurs fonctionnels
◦ Ne suis aucun schéma

2013 nouvelle abstraction : DataFrame


◦ Plus structurée
◦ Représentation interne plus optimisée que le RDD
◦ Abstraction principale de SparkSQL

30

30

Dataset
2015 Spark 2 : Dataset
◦ Nouvelle abstraction de données plus large que le
DataFrame
◦ Typé : Dataset [ T ]
◦ Avantage : travailler avec des expressions typées dont on
connait toutes les propriétés

31

31

Enseignante : R. CHEBIL 2
Cours Big Data – Chapitre III Niveau : 3ème année

Exemples
Construction d’un dataframe Spark appelé « restaurants_df » à
partir de la table restaurant existante dans Cassandra. Le
schéma (noms des colonnes) est connu mais le type des
colonnes n’est pas connu au sein du dataframe.
Collection d’objets de type row

val restaurants_df =
spark.read.cassandraFormat("restaurant",
"resto_ny").load()

restaurants_df.printSchema()

restaurants_df.show()

32

32

Exemples
Réalisation d’un filtre correspondant au where dans
SQL :

val manhattan = restaurants_df.filter("borough =


'MANHATTAN'")

manhattan.show()

Comment peut-on exprimer cette transformation avec les


RDD?
33

33

Enseignante : R. CHEBIL 3
Cours Big Data – Chapitre III Niveau : 3ème année

Exemples
Construction d’un Dataset dont les colonnes sont typées :
nous pouvons donc exprimer des opérations plus précises
qu’avec les dataframes.
case class Restaurant(id: Integer, Name: String,
borough: String, BuildingNum: String, Street:
String, ZipCode: Integer, Phone: String,
CuisineType: String) Collection d’objets de type
Restaurant
val restaurants_ds= restaurants_df.as[Restaurant]

Pour ceci il a fallu définir une classe dans le langage de


programmation (ici, Scala) et demander la conversion.

34

34

Exemples
Réalisation du même filtre sur le dataset :

val r = restaurants_ds.filter(r => r.borough ==


"MANHATTAN")

Réalisation d’agrégats par arrondissement :


val comptage_par_borough =
restaurants_ds.groupBy("borough").count()

35

35

Enseignante : R. CHEBIL 4
Cours Big Data – Chapitre III Niveau : 3ème année

Exemples
Plusieurs opérations auraient bien pu s’exprimer en CQL
(Cassandra).

Mais Spark va plus loin en termes de capacité de traitements, et


propose notamment la fameuse opération de jointure non
disponible sur Cassandra!

36

36

Conclusion
MapReduce est « le langage assembleur » du calcul distribué

Spark se base sur MapReduce mais l’élargit en proposant des


opérations supplémentaires et en employant différentes
techniques d’optimisation.

Spark est une alternative à MapReduce de Hadoop.

Les RDD sont tolérants aux pannes


37

37

Enseignante : R. CHEBIL 5
Cours Big Data – Chapitre III Niveau : 3ème année

Conclusion
RDD : données au schéma très flexible, mais beaucoup plus difficile
à manipuler.

DataFrame/ Dataset :
◦ Données au schéma très contraint offrant un niveau de sécurité
élevé.
◦ Concepteur : possibilité de référencer des champs et de leur
appliquer des opérations standards en fonction de leur type sans
avoir à écrire une fonction spécifique pour la moindre opération
=> Rend le code beaucoup plus lisible et concis.
◦ Système : la connaissance du schéma facilite les contrôles avant
exécution

38

38

Enseignante : R. CHEBIL 6

Vous aimerez peut-être aussi