Spark - RDD
Amin Mesmoudi
[Link]@[Link]
Fonctionnement de Spark - RDD
Resilient Distributed Dataset
Abstraction, collection traitée en parallèle
Tolérant à la panne
Manipulation de tuples :
Clé - Valeur
Tuples indépendants les uns des autres
2
Sources
Fichier sur HDFS
Fichier local
Collection en mémoire
Amazon S3
Base NoSQL
...
Ou une implémentation personnalisé
3
Transformations
Manipule un RDD, retourne un autre RDD
Lazy !
Exemples :
map() : une valeur → une valeur
filter() : filtre les valeurs/tuples
groupByKey() : regroupe les valeurs par clés
reduceByKey() : aggrège les valeurs par clés
join(), cogroup()... : jointure entre deux RDD
4
Actions finales
Ne retournent pas un RDD
Exemples :
count() : compte les valeurs/tuples
saveAsHadoopFile() : sauve les résultats au format
Hadoop
foreach() : exécute une fonction sur chaque
valeur/tuple
collect() : récupère les valeurs dans une list
5
Spark - RDD - Exemple
[Link] Nombre total de vols par
destination
Programme Spark
6
Programme Spark
2015-
[Link] collect
et println
inputFile
map filter map reduceByKey sortBy
rddFromFile rdd1 rdd2 rdd3 rdd4 rdd5
RDD[String] RDD[Array[String]] RDD[Array[String]] RDD[Array[String]] RDD[(String, Int)] RDD[(String, Int)]
7
Illustration de quelques transformations (1)
[Link](x -> x + 1);
Map
[Link](x -> (x % 2 == 0));
Filter
8
Illustration de quelques transformations (2)
[Link](rdd2)
Union
[Link](rdd2)
Intersection
9
Illustration de quelques transformations (3)
val rddwithdupElements =
[Link](Array(1,1,2,4,5,6,8,8,9,10,11,11))
[Link]()
val rddStrings = [Link](List("A","B","C"))
val rddIntegers = [Link](List(1,4,5
[Link](rddIntegers)
10
Illustration de quelques transformations (4)
[Link]()
[Link]((v1, v2) -> v1 + v2);
11
Illustration de quelques transformations (6)
[Link]()
val joinedRDD = [Link](pairRDD2);
12
Illustration de quelques actions finales (1)
isEmpty
var isRDDEmpty= [Link](a=> [Link](5)).isEmpty()
Collect
var collectedList= [Link]()
count
var countVal= [Link]()
13
Illustration de quelques actions finales (2)
first()
var first= [Link]()
take()
var takeTwo= [Link](2)
14
Illustration de quelques actions finales (3)
forEach
[Link]().foreach(x=>println("The element values of the RDD are ::"+x))
15
Programme Spark
2015-
[Link] collect
et println
inputFile
map filter map reduceByKey sortBy
rddFromFile rdd1 rdd2 rdd3 rdd4 rdd5
RDD[String] RDD[Array[String]] RDD[Array[String]] RDD[Array[String]] RDD[(String, Int)] RDD[(String, Int)]
16