Académique Documents
Professionnel Documents
Culture Documents
Introduction à Spark
• On peut le faire également avec YARN, mais les données issues de chaque
phase doivent être stockées sur HDFS, pour être réutilisées immédiatement
après dans la phase suivante. Cela prend beaucoup de temps et d'espace.
• Spark SQL : est un module qui permet d'écrire des requêtes SQL et de les
exécuter sur Spark.
• Spark Streaming : permet de traiter en temps réel des flux de données. Il
permet aux développeurs d'écrire des applications qui peuvent recevoir, traiter
et analyser en continu des données en temps réel provenant de diverses
sources.
• Spark MLlib : est un composant d'Apache Spark qui offre un framework évolutif
et distribué pour les tâches d'apprentissage automatique. Il propose une large
gamme d'algorithmes et d'utilitaires d'apprentissage automatique qui peuvent
être utilisés pour la préparation des données, l'entraînement des modèles et
l'évaluation des modèles.
• Spark GraphX : est une bibliothèque qui permet de traiter et d'analyser des
données de graphe de manière distribuée. Elle fournit des fonctionnalités pour
représenter des graphes, effectuer des calculs sur les graphes, ainsi que des
algorithmes de graphe.
6
• Ils sont:
Partitionnés (pour permettre à plusieurs nœuds de traiter les données).
En lecture seule; un traitement appliqué à un RDD donne lieu à la création d'un
nouveau RDD.
7
Une action : les actions accèdent aux données d'un RDD, et nécessitent donc
son évaluation (toutes les transformations ayant donné lieu à la création de ce
RDD sont exécutées l'une aprés l'autre).
« saveAsTextFile » (qui permet de sauver le contenu d'un RDD) ou « count »
(qui renvoie le nombre d'éléments dans un RDD) sont des exemples
d'actions.
9
• Task (Tâche): Une Tâche est une unité de traitement exécutée sur chaque partition du RDD.
• Job : un job représente l’ensemble des Stages définies dans le plan d’exécution. C’est la
matérialisation du plan d’exécution dans son ensemble.
14
pySpark :
implémentation de Spark en langage python.
16
nomappli = "essai1"
config = SparkConf().setAppName(nomappli)
##config.setMaster("spark://master:7077")
sc = SparkContext(conf=config)
RDD
• Lecture d’un SequenceFile dans un RDD : cette fonction lit les paires du fichier
et crée un RDD :
RDD = sc.sequenceFile("/data1.seq")
• Écriture d’un RDD dans un SequenceFile: cette fonction enregistre les paires
(clé, valeur) du RDD :
RDD.saveAsSequenceFile("/data2.seq")
19
Actions
• Les actions sont des méthodes qui s’appliquent à un RDD pour retourner une
valeur ou une collection :
liste = RDD.collect() retourne le RDD sous forme d’une liste Python.
nombre = RDD.count() retourne le nombre d’éléments.
premier = RDD.first() retourne le premier élément.
premiers = RDD.take(n) retourne les n premiers éléments.
Note: il n’y a pas de méthode last pour retourner le ou les derniers éléments.
resultat = RDD.reduce(fonction) applique une fonction d’agrégation
(associative) du type fn(a,b)→c
Exemple :
RDD = sc.parallelize([0,1,2,3])
RDD2 = RDD.flatMap(lambda n: [n*2, n*2+1])
Transformations ensemblistes
RDD1 = sc.parallelize([1,2,3,4])
RDD2 = sc.parallelize([6,5,4,3])
print(RDD1.union(RDD2).collect())
print(RDD1.union(RDD2).distinct().collect())
23
Transformations ensemblistes
RDD1 = sc.parallelize([1,2,3,4])
RDD2 = sc.parallelize([6,5,4,3])
RDD3 = RDD1.intersection(RDD2)
Les transformations suivantes manipulent des RDD dont les éléments sont des
paires (clé, valeur) :
• RDD.groupByKey() : retourne un RDD dont les éléments sont des paires (clé,
liste des valeurs ayant cette clé dans le RDD concerné).
• RDD.sortByKey(ascending) : retourne un RDD dont les clés sont triées. Mettre
True ou False.
• RDD.reduceByKey(fonction) : regroupe les valeurs ayant la même clé et leur
applique la fonction (a,b)→c.
RDD = sc.parallelize([(1,"v1"),(2,"v2"), (1,"v3"),(2,"v4"),(1,"v5") ])
print(RDD.reduceByKey(lambda a,b: a+"-"+b).collect())
Bibliographie
Akash Tandon, Sandy Ryza, Uri Laserson, Sean Owen, et Josh Wills, Advanced
Analytics with PySpark, O'REILLY, 2022
Benjamin Renaut, Apache Spark – Présentation et architecture, Support de
Cours, 2020
Hien Luu, Beginning Apache Spark 3, Apress, 2021
Mark Needham et Amy E. Hodler, Graph Algorithms: Practical Examples in
Apache Spark and Neo4j, O'REILLY, 2019
Moussa Keita, Big Data and Technologies of Storage and Processing of Massive
Data, Rapport technique, 2021
Rudi Bruchez, Les bases de données NoSQL et le Big Data : Comprendre et
mettre en oeuvre, 2015
Bill Chambers et Matei Zaharia, Spark : The Definitive Guide, 2018
….
27