SlideShare une entreprise Scribd logo
Initiation au calcul distribué avec
Apache Spark 2.x
Pr Hajji Hicham
https://www.linkedin.com/in/dr-hajji-hicham-6601606/
Plan
• Besoins de calcul distribué
• Ecosysteme Spark
• Spark data abstractions
• Machine learning avec Spark
• Optimisation avec Spark
Sources
• www.Databricks.com
• https://spark.apache.org/docs/latest/quick-
start.html
• http://training.databricks.com/visualapi.pdf
4
C’est quoi le Parallélisme?
Le parallélisme est l'utilisation de plusieurs
unités de traitement pour résoudre un
problème, et en particulier l'utilisation de
plusieurs unités de traitement fonctionnant
simultanément sur différentes parties d'un
problème
Besoins de calcul parallèle
• Plusieurs plateformes ont été proposées
pour le calcul parallèle:
– Multicore
– Symmetric Multiprocessors (SMP)
– Cluster Computing
– Massively Parallel Computing
– Grid Computing
– Cloud Computing
– Hadoop MapReduce
– …
Difficultés et challenges
• Difficile à utiliser
• Des frameworks existent mais orientés mono
objectif…
Pourquoi Spark?
• Rapide
– Exécution 100 fois plus rapide
– Pour le batch et le streaming
• Facile à utiliser
– Écrire des programmes en Java, Scala, Python, R, SQL
– Offre des opérateurs de haut niveaux pour exécuter des opérations en parallèle
facilement
• Générique
– Combine SQL, Streaming et des calculs analytiques complexes
– On peut combiner l’utilisation des API Spark, Spark SQL, Spark Mllib, GraphX,
Spark Streaming dans une seule application
• S’exécute partout
– Sur Hadoop, Mesos, Kubernetes, Standalone, ou au Cloud
– Peut accéder plusieurs sources de données: HDFS, Hive, Casandra, Hbase, ….
Hadoop vs Spark
• Traitement en mémoire:
– le traitement en mémoire est plus rapide par rapport à Hadoop, car il n'y a pas de temps
passé à déplacer des données / processus vers et depuis le disque.
• Évaluation Lazy :
– Apache Spark commence à évaluer uniquement lorsque cela est absolument nécessaire. Cela
joue un rôle important en contribuant à sa vitesse.
• Moins de lignes de code:
– Bien que Spark soit écrit à la fois en Scala et en Java, l'implémentation est en Scala
• Moins de latence:
– Apache Spark met en cache la plupart des données d'entrée en mémoire
• Traitement de flux:
– Apache Spark prend en charge le traitement de flux, qui implique une entrée et une sortie
continues de données. Le traitement de flux est également appelé traitement en temps réel.
Ecosystème Spark
Composantes de Spark
• Spark Core
– Spare Core est le noyau de base de Spark, qui
comprend tous les composants pour la planification des
travaux, l'exécution de diverses opérations de mémoire,
la tolérance aux pannes, etc.
– L’abstraction de base pour gérer les collections de
données est RDD
Composantes de Spark
• Spark SQL
– Apache Spark fonctionne avec les données non structurées
– Spark SQL permet d'interroger des données via SQL
– Il prend également en charge les données de diverses sources telles
que les tables, les fichiers journaux, JSON, etc.
– Spark SQL permet aux programmeurs de rédiger des requêtes en SQL ,
Python, Java, Scala ou R.
Composantes de Spark
• Spark Streaming
– Spark Streaming traite des flux de données en direct.
– Les données générées par diverses sources sont traitées à
l'instant même par Spark Streaming.
– Des exemples de ces données comprennent les fichiers
journaux, IOT…
Composantes de Spark
• GraphX
– GraphX ​​est la bibliothèque d'Apache Spark pour
permettre le calcul parallèle au graphes.
– Apache Spark comprend un certain nombre
d'algorithmes de graphes qui aident les utilisateurs à
simplifier l'analyse sur les graphe.
Composantes de Spark
• Mllib
– Apache Spark propose une bibliothèque contenant des services
Machine Learning (ML) appelés MLlib.
– Il fournit différents types d'algorithmes ML:
• la régression,
• le clustering
• la classification
Spark data abstractions
• RDD
• Dataframe
• Dataset
Cycle de vie d’une requête sur Spark
• Chaque application Spark se compose d'un programme Driver
qui exécute la fonction principale de l'utilisateur et exécute
diverses opérations parallèles sur un cluster.
• Spark transforme les données à traiter en une collection
d'éléments partitionnés sur les nœuds du cluster qui peuvent
être exploités en parallèle.
RDD
- Écrire des programmes en termes de transformations
sur des données distribués
- Données distribués résilients (RDD):
- Collections d'objets pouvant être stockées en mémoire ou sur
disque sur un cluster
- Transformations fonctionnelles parallèles (Map, filter,…)
- Reconstruit automatiquement en cas d'échec
Source Matei Zaharia
Strata Conference
RDD
• Il existe deux façons de créer des RDD :
– Paralléliser une collection existante dans votre
programme driver
– ou référencer un ensemble de données dans un
système de stockage externe, tel qu'un système de
fichiers partagé, HDFS, HBase ou toute autre source
de données offrant un Hadoop InputFormat.
Operations =
TRANSFORMATIONS
ACTIONS
+
Les RDD prennent en charge deux types d'opérations:
- les transformations, qui créent un nouvel ensemble de données
à partir d'un existant,
- et les actions, qui renvoient une valeur au programme driver
après l'exécution d'un calcul sur l'ensemble de données.
Operations =
TRANSFORMATIONS
ACTIONS
+
- Toutes les transformations dans Spark sont Lazy:
- elles ne calculent pas immédiatement leurs résultats.
- ils se souviennent simplement des transformations appliquées à un ensemble de
données de base (par exemple, un fichier).
- Les transformations ne sont calculées que lorsqu'une action nécessite de renvoyer
un résultat au programme Driver.
- Cette conception permet à Spark de fonctionner plus efficacement.
opération Map
Opération FlatMap
Opération filter
Source: backtobasics
Opération GroupByKey
• Regroupement de valeurs par une clé
commune
Source: backtobasics
Opérateur Description
map Prend un document en entrée et produit un document en sortie
filter Filtre les documents de la collection
flatMap
Prend un document en entrée, produit un ou plusieurs document(s) en
sortie
groupByKey Regroupement de documents par une valeur de clé commune
reduceByKey Réduction d’une paire (k, [v]) par une agrégation du tableau [v]
crossProduct Produit cartésien de deux collections
join Jointure de deux collections
union Union de deux collections
sort Tri d’une collection
• map
• filter
• flatMap
• mapPartitions
• mapPartitionsWithIndex
• groupBy
• sortBy
= medium
Essential Core & Intermediate Spark Operations
TRANSFORMATIONS
ACTIONS
General
• sample
• randomSplit
Math / Statistical
= easy
Set Theory /
Relational
• union
• intersection
• subtract
• distinct
• cartesian
• zip
• takeOrdered
Data Structure / I/O
• saveAsTextFile
• saveAsSequenceFile
• saveAsObjectFile
• saveAsHadoopDataset
• saveAsHadoopFile
• saveAsNewAPIHadoopDataset
• saveAsNewAPIHadoopFile
• keyBy
• zipWithIndex
• zipWithUniqueID
• zipPartitions
• coalesce
• repartition
• repartitionAndSortWithinPartitions
• pipe
• count
• takeSample
• max
• min
• sum
• histogram
• mean
• variance
• stdev
• sampleVariance
• countApprox
• countApproxDistinct
• reduce
• collect
• aggregate
• fold
• first
• take
• forEach
• top
• treeAggregate
• treeReduce
• forEachPartition
• collectAsMap
Key-Value Pairs
= medium
Essential Core & Intermediate PairRDD Operations
TRANSFORMATIONSACTIONS
Genera
l • sampleByKey
Math / Statistical
= easy
Set Theory / Relational Data Structure
• keys
• values
• partitionBy
• countByKey
• countByValue
• countByValueApprox
• countApproxDistinctByKey
• countApproxDistinctByKey
• countByKeyApprox
• sampleByKeyExact
• cogroup (=groupWith)
• join
• subtractByKey
• fullOuterJoin
• leftOuterJoin
• rightOuterJoin
• flatMapValues
• groupByKey
• reduceByKey
• reduceByKeyLocally
• foldByKey
• aggregateByKey
• sortByKey
• combineByKey
Persistence RDD
• Spark permet est la persistance (ou la mise en
cache) d'un ensemble de données en mémoire
entre les opérations.
– Cela permet aux actions futures d'être beaucoup plus
rapides (souvent de plus de 10 fois).
– La mise en cache est un outil clé pour les algorithmes
itératifs.
Persistance RDD
Quel niveau de stockage choisir?
• L'option la plus efficace en termes de CPU est
d’utiliser le niveau de stockage par défaut
(MEMORY_ONLY).
– permet aux opérations sur les RDD de s'exécuter aussi
rapidement que possible.
• L’autre option est MEMORY_ONLY_SER pour rendre
les objets prennent moins de place, mais toujours
assez rapides pour y accéder. (Java et Scala)
Mieux que des mots une démo
Databricks Cloud
Problèmes avec RDD
• Manque d’optimisation:
– Aucun moteur d'optimisation intégré:
• lorsqu'ils travaillent avec des données structurées, les RDD ne
peuvent pas tirer parti des optimiseurs avancés de Spark
• Les développeurs doivent optimiser chaque RDD en fonction de
ses attributs.
– les RDD n'infèrent pas le schéma des données ingérées et
nécessitent que l'utilisateur le spécifie.
RDD[Person]
Distributed computing with Spark 2.x
Spark SQL et Dataframe/Dataset
• Contrairement à l’API RDD, les interfaces
fournies par Spark SQL fournissent à Spark
plus d'informations sur la structure des
données et du calcul effectué.
• En interne, Spark SQL utilise ces informations
supplémentaires pour effectuer des
optimisations supplémentaires.
Spark Dataframe
• Un DataFrame est un ensemble de données organisé
en colonnes nommées.
– conceptuellement équivalent à une table dans une BD
relationnelle ou à une dataframe en R / Python, mais avec
des optimisations plus riches .
– Elles peuvent être construites à partir d'un large choix de
sources : Hive, BD externes, …, ou RDD existants.
Créer une Dataframe
• Spark.read.X
– X: json, csv, …
Dataframe et Source de données
• Spark SQL prend en charge le fonctionnement sur
diverses sources de données via l'interface
DataFrame:
– Fichiers Parquet
– Fichiers ORC
– Fichiers JSON
– Tables HIVE
– Fichiers AVRO
– JDBC Connections
– …
Opérations sur Dataframe
• Les DataFrames fournissent un langage spécifique
au domaine pour la manipulation de données
structurées en Scala, Java, Python et R.
Opérations sur Dataframe
• Opérations relationelles :
– Select
– Where
– Join
– groupBy
– Liste exhaustive:
https://spark.apache.org/docs/latest/api/scala/in
dex.html#org.apache.spark.sql.functions$
SQL sur Dataframe
Problème avec Dataframe
• Sécurité de type à la compilation:
– l'API Dataframe ne prend pas en charge la sécurité
à la compilation, ce qui empêche de manipuler
des données lorsque la structure n'est pas
connue.
– L'exemple suivant fonctionne pendant la
compilation. Cependant, une exception Runtime
est lancée lors de l'exécution de ce code.
Spark Dataset
• Un Dataset est aussi une collection distribuée de
données.
– Elle offre les avantages des :
• RDD (typage fort, capacité à utiliser de puissantes fonctions
lambda)
• avec les avantages du moteur d'exécution optimisé de Spark
SQL.
Créer un dataset
RDD vers Dataframe avec .DF()
Dataframe/Dataset vers RDD
Demo
Dataframe/Dataset
Optimisation de Spark SQL avec
Catalyst
Catalyst et les règles d’optimisation
• La conception extensible de Catalyst a deux
objectifs:
– Facilité de pouvoir étendre l'optimiseur :
• en ajoutant des règles spécifiques à la source de
données ( ex: pousser le filtrage ou l'agrégation dans
des systèmes de stockage externes)
• ou la prise en charge de nouveaux types de données.
– Il est facile d’ajouter de nouvelles techniques et
fonctionnalités d’optimisation à Spark SQL
Comparaison RDD, Dataframe, Dataset
Comparaison RDD, Dataframe, Dataset
Performance Tuning
• Cache en mémoire
– spark.catalog.cacheTable("tableName")
– dataFrame.cache().
• Autres techniques
SPARK MACHINE LEARNING
Example: Classification de texte
Dataset source: http://kdd.ics.uci.edu/databases/20newsgroups/20newsgroups.html
55
• Objectif: Étant donné un document texte,
prédire son sujet.
Subject: Re: Lexan Polish?
Suggest McQuires #1 plastic polish. It
will help somewhat but nothing will
remove deep scratches without making it
worse than it already is.
McQuires will do something...
1: about science
0: not about science
LabelFeatures
text, image, vector, ...
CTR, inches of rainfall, ...
Jeu de données: «20 groupes de
discussion»
Des archives UCI KDD
Entrainement& Test
Source: Databricks 56
Entrainement Test/Production
Étant donné les données labélisées :
collections de (features, label)
Subject: Re: Lexan Polish?
Suggest McQuires #1 plastic polish. It
will help...
Subject: RIPEM FAQ
RIPEM is a program which performs
Privacy Enhanced...
...
Label 0
Label 1
Apprendre un modèle
De nouvelles données Non labélisées :
: collections de features
Subject: Apollo Training
The Apollo astronauts also trained at (in)
Meteor...
Subject: A demo of Nonsense
How can you lie about something that no
one...
Utiliser le modèle pour
Réaliser des predictions.
Label 1
Label 0
Machine learning avec Spark
• MLlib est la bibliothèque d'apprentissage
automatique (ML) de Spark. Son objectif est de :
– Capable d’apprendre sur de très large datasets
– Facile de construire des applications ML
– Rendre l'apprentissage automatique pratique évolutif et
facile.
Machine learning avec Spark
• Elle fournit des outils tels que:
– Algorithmes ML:
• algorithmes d'apprentissage courants tels que la classification, la
régression, le clustering et le filtrage collaboratif…
– Caractérisation (Featurization):
• extraction de caratéristiques (feature extraction), transformation, réduction
de dimensionnalité et sélection
– Pipelines:
• outils de construction, d'évaluation et de réglage des pipelines ML
– Persistance:
• enregistrement et chargement d'algorithmes, de modèles et de pipelines
Spark ML- Pipelines
• Le concept de pipeline est principalement
inspiré du projet scikit-learn.
• Les pipelines ML, reposent sur des
DataFrames
Format LibSVM
• la première valeur est le label (ou index)
• et les features sont un tableau de features au format label:
feature. Ici, nous utilisons simplement les fonctionnalités
«1», «2» et «3» au lieu des noms d'en-tête.
LibSVM Format
label
features
(label: Double, features: Vector)
Sparse vs Dense Format
• Par exemple, un vecteur [1., 0., 0., 0., 0., 0., 0., 3.] peut être représenté au
format sparse comme (7, [0, 6], [1. , 3.]), où 7 est la taille du vecteur
Spark ML- Pipelines- Transformer
– Transformer: Un Transformer est un algorithme qui peut
transformer un DataFrame en un autre DataFrame.
StringIndexer
• StringIndexer code une colonne de chaînes de
caractères en une colonne d'index de labels:
– «oranges» obtient l'index 0 car c'est le plus
fréquent, suivi de «apples» avec l'index 1 et
«banana» avec l'index 2.
StringIndexer
???
???
???
???
???
???
???
OneHotEncoder
• Un OneHotEncoder mappe les indices des labels à une
représentation vectorielle binaire avec au plus une seule
valeur
– Quand l’algorithme attend des attributs continus (continuous
features)
– prend le label / catégorie indexée du StringIndexer, puis l'encode
en un vecteur sparse
VectorAssembler
• Le VectorAssembler permet de combiner les
features brutes et les features générées à
partir de diverses transformations en un seul
vecteur de features
Spark ML- Pipelines-Estimateur
– Estimateur: Un estimateur est un algorithme qui
peut être ajusté sur un DataFrame pour produire
un transformateur.
• Par exemple, un algorithme d'apprentissage est un
estimateur qui s'entraîne sur un DataFrame et produit
un modèle.
Spark ML- Pipelines-Evaluateur
– Evaluateur :
• est utilisé pour évaluer les modèles et est généralement (sinon
toujours) utilisé pour la meilleure sélection de modèle par
CrossValidator et TrainValidationSplit.
• Les évaluateurs sont des transformateurs qui prennent des
DataFrames et calculent des métriques indiquant la qualité d'un
modèle.
Evaluateur Description
BinaryClassificationEvaluator Évaluateur de modèles de classification
binaire
ClusteringEvaluator Évaluateur de modèles de clustering
MulticlassClassificationEvaluator Évaluateur de modèles de classification
multiclasse
RegressionEvaluator Évaluateur de modèles de régression
Spark ML- Pipelines
– Pipeline: un pipeline chaîne plusieurs
transformateurs et estimateurs ensemble pour
spécifier un flux de travail ML.
Spark ML Classification
Demo
Spark ML Regression
Demo
Spark ML Model Selection
Demo
Delta Lake
• Delta Lake est une couche de stockage open
source qui apporte de la fiabilité aux lacs de
données Data Lake.
• Delta Lake fournit des transactions ACID, une
gestion évolutive des métadonnées et unifie le
streaming et le traitement des données par lots.
• Delta Lake fonctionne au-dessus de votre lac de
données existant et est entièrement compatible
avec les API Apache Spark.

Contenu connexe

Tendances

Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Databricks
 
Understanding Query Plans and Spark UIs
Understanding Query Plans and Spark UIsUnderstanding Query Plans and Spark UIs
Understanding Query Plans and Spark UIs
Databricks
 
Spark architecture
Spark architectureSpark architecture
Spark architecture
GauravBiswas9
 
Introduction to Spark
Introduction to SparkIntroduction to Spark
Introduction to Spark
Li Ming Tsai
 
Apache Spark with Scala
Apache Spark with ScalaApache Spark with Scala
Apache Spark with Scala
Fernando Rodriguez
 
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Databricks
 
Apache Spark Core
Apache Spark CoreApache Spark Core
Apache Spark Core
Girish Khanzode
 
Data Source API in Spark
Data Source API in SparkData Source API in Spark
Data Source API in Spark
Databricks
 
Introduction to apache spark
Introduction to apache spark Introduction to apache spark
Introduction to apache spark
Aakashdata
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
Prashant Gupta
 
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Simplilearn
 
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
spark-project
 
Introduction to Spark Internals
Introduction to Spark InternalsIntroduction to Spark Internals
Introduction to Spark Internals
Pietro Michiardi
 
Apache Spark Components
Apache Spark ComponentsApache Spark Components
Apache Spark Components
Girish Khanzode
 
Integrating Apache Kafka Into Your Environment
Integrating Apache Kafka Into Your EnvironmentIntegrating Apache Kafka Into Your Environment
Integrating Apache Kafka Into Your Environment
confluent
 
Apache Flink internals
Apache Flink internalsApache Flink internals
Apache Flink internals
Kostas Tzoumas
 
Apache Spark Overview
Apache Spark OverviewApache Spark Overview
Apache Spark Overview
Vadim Y. Bichutskiy
 
Spark SQL
Spark SQLSpark SQL
Spark SQL
Joud Khattab
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connect
confluent
 
Lecture6 introduction to data streams
Lecture6 introduction to data streamsLecture6 introduction to data streams
Lecture6 introduction to data streams
hktripathy
 

Tendances (20)

Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
 
Understanding Query Plans and Spark UIs
Understanding Query Plans and Spark UIsUnderstanding Query Plans and Spark UIs
Understanding Query Plans and Spark UIs
 
Spark architecture
Spark architectureSpark architecture
Spark architecture
 
Introduction to Spark
Introduction to SparkIntroduction to Spark
Introduction to Spark
 
Apache Spark with Scala
Apache Spark with ScalaApache Spark with Scala
Apache Spark with Scala
 
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
 
Apache Spark Core
Apache Spark CoreApache Spark Core
Apache Spark Core
 
Data Source API in Spark
Data Source API in SparkData Source API in Spark
Data Source API in Spark
 
Introduction to apache spark
Introduction to apache spark Introduction to apache spark
Introduction to apache spark
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
 
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
 
Introduction to Spark Internals
Introduction to Spark InternalsIntroduction to Spark Internals
Introduction to Spark Internals
 
Apache Spark Components
Apache Spark ComponentsApache Spark Components
Apache Spark Components
 
Integrating Apache Kafka Into Your Environment
Integrating Apache Kafka Into Your EnvironmentIntegrating Apache Kafka Into Your Environment
Integrating Apache Kafka Into Your Environment
 
Apache Flink internals
Apache Flink internalsApache Flink internals
Apache Flink internals
 
Apache Spark Overview
Apache Spark OverviewApache Spark Overview
Apache Spark Overview
 
Spark SQL
Spark SQLSpark SQL
Spark SQL
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connect
 
Lecture6 introduction to data streams
Lecture6 introduction to data streamsLecture6 introduction to data streams
Lecture6 introduction to data streams
 

Similaire à Distributed computing with Spark 2.x

Spark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxSpark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptx
Anass Nabil
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctions
MICHRAFY MUSTAFA
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
Mehdi Erraki
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017
Dr Hajji Hicham
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
Amal Abid
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
Lilia Sfaxi
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
Alexia Audevart
 
Spark
SparkSpark
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
Julien Anguenot
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
MICHRAFY MUSTAFA
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.ppt
Idriss22
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
Microsoft
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx
majdoulineaitabdelal
 
Presentation des outils traitements distribues
Presentation des outils traitements distribuesPresentation des outils traitements distribues
Presentation des outils traitements distribues
Lê Anh
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
Victor Coustenoble
 
Elastic serach
Elastic serachElastic serach
Elastic serach
TAOUFIQ ELFILALI
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
Alexis Seigneurin
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
Zenika
 
Big data architectures
Big data architecturesBig data architectures
Big data architectures
Mariem Khalfaoui
 

Similaire à Distributed computing with Spark 2.x (20)

Spark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxSpark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptx
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctions
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
Spark
SparkSpark
Spark
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.ppt
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx
 
Presentation des outils traitements distribues
Presentation des outils traitements distribuesPresentation des outils traitements distribues
Presentation des outils traitements distribues
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
Elastic serach
Elastic serachElastic serach
Elastic serach
 
Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Big data architectures
Big data architecturesBig data architectures
Big data architectures
 

Plus de Dr Hajji Hicham

SEED4NA _AI4DRONE.pdf
SEED4NA _AI4DRONE.pdfSEED4NA _AI4DRONE.pdf
SEED4NA _AI4DRONE.pdf
Dr Hajji Hicham
 
Urban Big Data .pdf
Urban Big Data .pdfUrban Big Data .pdf
Urban Big Data .pdf
Dr Hajji Hicham
 
Slides Edataday2021_V2.pdf
Slides Edataday2021_V2.pdfSlides Edataday2021_V2.pdf
Slides Edataday2021_V2.pdf
Dr Hajji Hicham
 
Visual Transformer Overview
Visual Transformer OverviewVisual Transformer Overview
Visual Transformer Overview
Dr Hajji Hicham
 
Processing Drone data @Scale
Processing Drone data @ScaleProcessing Drone data @Scale
Processing Drone data @Scale
Dr Hajji Hicham
 
Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...
Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...
Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...
Dr Hajji Hicham
 
Syllabus advanced big data with spark
Syllabus advanced big data with sparkSyllabus advanced big data with spark
Syllabus advanced big data with spark
Dr Hajji Hicham
 

Plus de Dr Hajji Hicham (7)

SEED4NA _AI4DRONE.pdf
SEED4NA _AI4DRONE.pdfSEED4NA _AI4DRONE.pdf
SEED4NA _AI4DRONE.pdf
 
Urban Big Data .pdf
Urban Big Data .pdfUrban Big Data .pdf
Urban Big Data .pdf
 
Slides Edataday2021_V2.pdf
Slides Edataday2021_V2.pdfSlides Edataday2021_V2.pdf
Slides Edataday2021_V2.pdf
 
Visual Transformer Overview
Visual Transformer OverviewVisual Transformer Overview
Visual Transformer Overview
 
Processing Drone data @Scale
Processing Drone data @ScaleProcessing Drone data @Scale
Processing Drone data @Scale
 
Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...
Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...
Overview of Interpretability Approaches in Deep learning: Focus on Convnet ar...
 
Syllabus advanced big data with spark
Syllabus advanced big data with sparkSyllabus advanced big data with spark
Syllabus advanced big data with spark
 

Dernier

Les Français et les élections législatives
Les Français et les élections législativesLes Français et les élections législatives
Les Français et les élections législatives
contact Elabe
 
ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024
contact Elabe
 
Flash'Conso - Juillet 2024 : Les Français et les prospectus papier
Flash'Conso - Juillet 2024 : Les Français et les prospectus papierFlash'Conso - Juillet 2024 : Les Français et les prospectus papier
Flash'Conso - Juillet 2024 : Les Français et les prospectus papier
Enov
 
Plan de communication pour "Les 7 sens".
Plan de communication pour "Les 7 sens".Plan de communication pour "Les 7 sens".
Plan de communication pour "Les 7 sens".
kevmaufay
 
ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024
contact Elabe
 
Les Français et la situation post élections législatives
Les Français et la situation post élections législativesLes Français et la situation post élections législatives
Les Français et la situation post élections législatives
contact Elabe
 
ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024
contact Elabe
 
ELABE BFMTV Estimation 2nd tour élections législatives 2024
ELABE BFMTV Estimation 2nd tour élections législatives 2024ELABE BFMTV Estimation 2nd tour élections législatives 2024
ELABE BFMTV Estimation 2nd tour élections législatives 2024
contact Elabe
 
ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024
contact Elabe
 
Projection de la participation ELABE pour BFMTV
Projection de la participation ELABE pour BFMTVProjection de la participation ELABE pour BFMTV
Projection de la participation ELABE pour BFMTV
contact Elabe
 

Dernier (10)

Les Français et les élections législatives
Les Français et les élections législativesLes Français et les élections législatives
Les Français et les élections législatives
 
ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H20 estimation 2nd tour élections législatives 2024
 
Flash'Conso - Juillet 2024 : Les Français et les prospectus papier
Flash'Conso - Juillet 2024 : Les Français et les prospectus papierFlash'Conso - Juillet 2024 : Les Français et les prospectus papier
Flash'Conso - Juillet 2024 : Les Français et les prospectus papier
 
Plan de communication pour "Les 7 sens".
Plan de communication pour "Les 7 sens".Plan de communication pour "Les 7 sens".
Plan de communication pour "Les 7 sens".
 
ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation estimation 2nd tour élections législatives 2024
 
Les Français et la situation post élections législatives
Les Français et la situation post élections législativesLes Français et la situation post élections législatives
Les Français et la situation post élections législatives
 
ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 21H37 estimation 2nd tour élections législatives 2024
 
ELABE BFMTV Estimation 2nd tour élections législatives 2024
ELABE BFMTV Estimation 2nd tour élections législatives 2024ELABE BFMTV Estimation 2nd tour élections législatives 2024
ELABE BFMTV Estimation 2nd tour élections législatives 2024
 
ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024
ELABE BFMTV Actualisation 23H59 estimation 2nd tour élections législatives 2024
 
Projection de la participation ELABE pour BFMTV
Projection de la participation ELABE pour BFMTVProjection de la participation ELABE pour BFMTV
Projection de la participation ELABE pour BFMTV
 

Distributed computing with Spark 2.x

  • 1. Initiation au calcul distribué avec Apache Spark 2.x Pr Hajji Hicham https://www.linkedin.com/in/dr-hajji-hicham-6601606/
  • 2. Plan • Besoins de calcul distribué • Ecosysteme Spark • Spark data abstractions • Machine learning avec Spark • Optimisation avec Spark
  • 4. 4 C’est quoi le Parallélisme? Le parallélisme est l'utilisation de plusieurs unités de traitement pour résoudre un problème, et en particulier l'utilisation de plusieurs unités de traitement fonctionnant simultanément sur différentes parties d'un problème
  • 5. Besoins de calcul parallèle • Plusieurs plateformes ont été proposées pour le calcul parallèle: – Multicore – Symmetric Multiprocessors (SMP) – Cluster Computing – Massively Parallel Computing – Grid Computing – Cloud Computing – Hadoop MapReduce – …
  • 6. Difficultés et challenges • Difficile à utiliser • Des frameworks existent mais orientés mono objectif…
  • 7. Pourquoi Spark? • Rapide – Exécution 100 fois plus rapide – Pour le batch et le streaming • Facile à utiliser – Écrire des programmes en Java, Scala, Python, R, SQL – Offre des opérateurs de haut niveaux pour exécuter des opérations en parallèle facilement • Générique – Combine SQL, Streaming et des calculs analytiques complexes – On peut combiner l’utilisation des API Spark, Spark SQL, Spark Mllib, GraphX, Spark Streaming dans une seule application • S’exécute partout – Sur Hadoop, Mesos, Kubernetes, Standalone, ou au Cloud – Peut accéder plusieurs sources de données: HDFS, Hive, Casandra, Hbase, ….
  • 8. Hadoop vs Spark • Traitement en mémoire: – le traitement en mémoire est plus rapide par rapport à Hadoop, car il n'y a pas de temps passé à déplacer des données / processus vers et depuis le disque. • Évaluation Lazy : – Apache Spark commence à évaluer uniquement lorsque cela est absolument nécessaire. Cela joue un rôle important en contribuant à sa vitesse. • Moins de lignes de code: – Bien que Spark soit écrit à la fois en Scala et en Java, l'implémentation est en Scala • Moins de latence: – Apache Spark met en cache la plupart des données d'entrée en mémoire • Traitement de flux: – Apache Spark prend en charge le traitement de flux, qui implique une entrée et une sortie continues de données. Le traitement de flux est également appelé traitement en temps réel.
  • 10. Composantes de Spark • Spark Core – Spare Core est le noyau de base de Spark, qui comprend tous les composants pour la planification des travaux, l'exécution de diverses opérations de mémoire, la tolérance aux pannes, etc. – L’abstraction de base pour gérer les collections de données est RDD
  • 11. Composantes de Spark • Spark SQL – Apache Spark fonctionne avec les données non structurées – Spark SQL permet d'interroger des données via SQL – Il prend également en charge les données de diverses sources telles que les tables, les fichiers journaux, JSON, etc. – Spark SQL permet aux programmeurs de rédiger des requêtes en SQL , Python, Java, Scala ou R.
  • 12. Composantes de Spark • Spark Streaming – Spark Streaming traite des flux de données en direct. – Les données générées par diverses sources sont traitées à l'instant même par Spark Streaming. – Des exemples de ces données comprennent les fichiers journaux, IOT…
  • 13. Composantes de Spark • GraphX – GraphX ​​est la bibliothèque d'Apache Spark pour permettre le calcul parallèle au graphes. – Apache Spark comprend un certain nombre d'algorithmes de graphes qui aident les utilisateurs à simplifier l'analyse sur les graphe.
  • 14. Composantes de Spark • Mllib – Apache Spark propose une bibliothèque contenant des services Machine Learning (ML) appelés MLlib. – Il fournit différents types d'algorithmes ML: • la régression, • le clustering • la classification
  • 15. Spark data abstractions • RDD • Dataframe • Dataset
  • 16. Cycle de vie d’une requête sur Spark • Chaque application Spark se compose d'un programme Driver qui exécute la fonction principale de l'utilisateur et exécute diverses opérations parallèles sur un cluster. • Spark transforme les données à traiter en une collection d'éléments partitionnés sur les nœuds du cluster qui peuvent être exploités en parallèle.
  • 17. RDD - Écrire des programmes en termes de transformations sur des données distribués - Données distribués résilients (RDD): - Collections d'objets pouvant être stockées en mémoire ou sur disque sur un cluster - Transformations fonctionnelles parallèles (Map, filter,…) - Reconstruit automatiquement en cas d'échec Source Matei Zaharia Strata Conference
  • 18. RDD • Il existe deux façons de créer des RDD : – Paralléliser une collection existante dans votre programme driver – ou référencer un ensemble de données dans un système de stockage externe, tel qu'un système de fichiers partagé, HDFS, HBase ou toute autre source de données offrant un Hadoop InputFormat.
  • 19. Operations = TRANSFORMATIONS ACTIONS + Les RDD prennent en charge deux types d'opérations: - les transformations, qui créent un nouvel ensemble de données à partir d'un existant, - et les actions, qui renvoient une valeur au programme driver après l'exécution d'un calcul sur l'ensemble de données.
  • 20. Operations = TRANSFORMATIONS ACTIONS + - Toutes les transformations dans Spark sont Lazy: - elles ne calculent pas immédiatement leurs résultats. - ils se souviennent simplement des transformations appliquées à un ensemble de données de base (par exemple, un fichier). - Les transformations ne sont calculées que lorsqu'une action nécessite de renvoyer un résultat au programme Driver. - Cette conception permet à Spark de fonctionner plus efficacement.
  • 24. Opération GroupByKey • Regroupement de valeurs par une clé commune Source: backtobasics
  • 25. Opérateur Description map Prend un document en entrée et produit un document en sortie filter Filtre les documents de la collection flatMap Prend un document en entrée, produit un ou plusieurs document(s) en sortie groupByKey Regroupement de documents par une valeur de clé commune reduceByKey Réduction d’une paire (k, [v]) par une agrégation du tableau [v] crossProduct Produit cartésien de deux collections join Jointure de deux collections union Union de deux collections sort Tri d’une collection
  • 26. • map • filter • flatMap • mapPartitions • mapPartitionsWithIndex • groupBy • sortBy = medium Essential Core & Intermediate Spark Operations TRANSFORMATIONS ACTIONS General • sample • randomSplit Math / Statistical = easy Set Theory / Relational • union • intersection • subtract • distinct • cartesian • zip • takeOrdered Data Structure / I/O • saveAsTextFile • saveAsSequenceFile • saveAsObjectFile • saveAsHadoopDataset • saveAsHadoopFile • saveAsNewAPIHadoopDataset • saveAsNewAPIHadoopFile • keyBy • zipWithIndex • zipWithUniqueID • zipPartitions • coalesce • repartition • repartitionAndSortWithinPartitions • pipe • count • takeSample • max • min • sum • histogram • mean • variance • stdev • sampleVariance • countApprox • countApproxDistinct • reduce • collect • aggregate • fold • first • take • forEach • top • treeAggregate • treeReduce • forEachPartition • collectAsMap
  • 28. = medium Essential Core & Intermediate PairRDD Operations TRANSFORMATIONSACTIONS Genera l • sampleByKey Math / Statistical = easy Set Theory / Relational Data Structure • keys • values • partitionBy • countByKey • countByValue • countByValueApprox • countApproxDistinctByKey • countApproxDistinctByKey • countByKeyApprox • sampleByKeyExact • cogroup (=groupWith) • join • subtractByKey • fullOuterJoin • leftOuterJoin • rightOuterJoin • flatMapValues • groupByKey • reduceByKey • reduceByKeyLocally • foldByKey • aggregateByKey • sortByKey • combineByKey
  • 29. Persistence RDD • Spark permet est la persistance (ou la mise en cache) d'un ensemble de données en mémoire entre les opérations. – Cela permet aux actions futures d'être beaucoup plus rapides (souvent de plus de 10 fois). – La mise en cache est un outil clé pour les algorithmes itératifs.
  • 31. Quel niveau de stockage choisir? • L'option la plus efficace en termes de CPU est d’utiliser le niveau de stockage par défaut (MEMORY_ONLY). – permet aux opérations sur les RDD de s'exécuter aussi rapidement que possible. • L’autre option est MEMORY_ONLY_SER pour rendre les objets prennent moins de place, mais toujours assez rapides pour y accéder. (Java et Scala)
  • 32. Mieux que des mots une démo
  • 34. Problèmes avec RDD • Manque d’optimisation: – Aucun moteur d'optimisation intégré: • lorsqu'ils travaillent avec des données structurées, les RDD ne peuvent pas tirer parti des optimiseurs avancés de Spark • Les développeurs doivent optimiser chaque RDD en fonction de ses attributs. – les RDD n'infèrent pas le schéma des données ingérées et nécessitent que l'utilisateur le spécifie. RDD[Person]
  • 36. Spark SQL et Dataframe/Dataset • Contrairement à l’API RDD, les interfaces fournies par Spark SQL fournissent à Spark plus d'informations sur la structure des données et du calcul effectué. • En interne, Spark SQL utilise ces informations supplémentaires pour effectuer des optimisations supplémentaires.
  • 37. Spark Dataframe • Un DataFrame est un ensemble de données organisé en colonnes nommées. – conceptuellement équivalent à une table dans une BD relationnelle ou à une dataframe en R / Python, mais avec des optimisations plus riches . – Elles peuvent être construites à partir d'un large choix de sources : Hive, BD externes, …, ou RDD existants.
  • 38. Créer une Dataframe • Spark.read.X – X: json, csv, …
  • 39. Dataframe et Source de données • Spark SQL prend en charge le fonctionnement sur diverses sources de données via l'interface DataFrame: – Fichiers Parquet – Fichiers ORC – Fichiers JSON – Tables HIVE – Fichiers AVRO – JDBC Connections – …
  • 40. Opérations sur Dataframe • Les DataFrames fournissent un langage spécifique au domaine pour la manipulation de données structurées en Scala, Java, Python et R.
  • 41. Opérations sur Dataframe • Opérations relationelles : – Select – Where – Join – groupBy – Liste exhaustive: https://spark.apache.org/docs/latest/api/scala/in dex.html#org.apache.spark.sql.functions$
  • 43. Problème avec Dataframe • Sécurité de type à la compilation: – l'API Dataframe ne prend pas en charge la sécurité à la compilation, ce qui empêche de manipuler des données lorsque la structure n'est pas connue. – L'exemple suivant fonctionne pendant la compilation. Cependant, une exception Runtime est lancée lors de l'exécution de ce code.
  • 44. Spark Dataset • Un Dataset est aussi une collection distribuée de données. – Elle offre les avantages des : • RDD (typage fort, capacité à utiliser de puissantes fonctions lambda) • avec les avantages du moteur d'exécution optimisé de Spark SQL.
  • 46. RDD vers Dataframe avec .DF()
  • 49. Optimisation de Spark SQL avec Catalyst
  • 50. Catalyst et les règles d’optimisation • La conception extensible de Catalyst a deux objectifs: – Facilité de pouvoir étendre l'optimiseur : • en ajoutant des règles spécifiques à la source de données ( ex: pousser le filtrage ou l'agrégation dans des systèmes de stockage externes) • ou la prise en charge de nouveaux types de données. – Il est facile d’ajouter de nouvelles techniques et fonctionnalités d’optimisation à Spark SQL
  • 53. Performance Tuning • Cache en mémoire – spark.catalog.cacheTable("tableName") – dataFrame.cache(). • Autres techniques
  • 55. Example: Classification de texte Dataset source: http://kdd.ics.uci.edu/databases/20newsgroups/20newsgroups.html 55 • Objectif: Étant donné un document texte, prédire son sujet. Subject: Re: Lexan Polish? Suggest McQuires #1 plastic polish. It will help somewhat but nothing will remove deep scratches without making it worse than it already is. McQuires will do something... 1: about science 0: not about science LabelFeatures text, image, vector, ... CTR, inches of rainfall, ... Jeu de données: «20 groupes de discussion» Des archives UCI KDD
  • 56. Entrainement& Test Source: Databricks 56 Entrainement Test/Production Étant donné les données labélisées : collections de (features, label) Subject: Re: Lexan Polish? Suggest McQuires #1 plastic polish. It will help... Subject: RIPEM FAQ RIPEM is a program which performs Privacy Enhanced... ... Label 0 Label 1 Apprendre un modèle De nouvelles données Non labélisées : : collections de features Subject: Apollo Training The Apollo astronauts also trained at (in) Meteor... Subject: A demo of Nonsense How can you lie about something that no one... Utiliser le modèle pour Réaliser des predictions. Label 1 Label 0
  • 57. Machine learning avec Spark • MLlib est la bibliothèque d'apprentissage automatique (ML) de Spark. Son objectif est de : – Capable d’apprendre sur de très large datasets – Facile de construire des applications ML – Rendre l'apprentissage automatique pratique évolutif et facile.
  • 58. Machine learning avec Spark • Elle fournit des outils tels que: – Algorithmes ML: • algorithmes d'apprentissage courants tels que la classification, la régression, le clustering et le filtrage collaboratif… – Caractérisation (Featurization): • extraction de caratéristiques (feature extraction), transformation, réduction de dimensionnalité et sélection – Pipelines: • outils de construction, d'évaluation et de réglage des pipelines ML – Persistance: • enregistrement et chargement d'algorithmes, de modèles et de pipelines
  • 59. Spark ML- Pipelines • Le concept de pipeline est principalement inspiré du projet scikit-learn. • Les pipelines ML, reposent sur des DataFrames
  • 60. Format LibSVM • la première valeur est le label (ou index) • et les features sont un tableau de features au format label: feature. Ici, nous utilisons simplement les fonctionnalités «1», «2» et «3» au lieu des noms d'en-tête. LibSVM Format label features (label: Double, features: Vector)
  • 61. Sparse vs Dense Format • Par exemple, un vecteur [1., 0., 0., 0., 0., 0., 0., 3.] peut être représenté au format sparse comme (7, [0, 6], [1. , 3.]), où 7 est la taille du vecteur
  • 62. Spark ML- Pipelines- Transformer – Transformer: Un Transformer est un algorithme qui peut transformer un DataFrame en un autre DataFrame.
  • 63. StringIndexer • StringIndexer code une colonne de chaînes de caractères en une colonne d'index de labels: – «oranges» obtient l'index 0 car c'est le plus fréquent, suivi de «apples» avec l'index 1 et «banana» avec l'index 2.
  • 65. OneHotEncoder • Un OneHotEncoder mappe les indices des labels à une représentation vectorielle binaire avec au plus une seule valeur – Quand l’algorithme attend des attributs continus (continuous features) – prend le label / catégorie indexée du StringIndexer, puis l'encode en un vecteur sparse
  • 66. VectorAssembler • Le VectorAssembler permet de combiner les features brutes et les features générées à partir de diverses transformations en un seul vecteur de features
  • 67. Spark ML- Pipelines-Estimateur – Estimateur: Un estimateur est un algorithme qui peut être ajusté sur un DataFrame pour produire un transformateur. • Par exemple, un algorithme d'apprentissage est un estimateur qui s'entraîne sur un DataFrame et produit un modèle.
  • 68. Spark ML- Pipelines-Evaluateur – Evaluateur : • est utilisé pour évaluer les modèles et est généralement (sinon toujours) utilisé pour la meilleure sélection de modèle par CrossValidator et TrainValidationSplit. • Les évaluateurs sont des transformateurs qui prennent des DataFrames et calculent des métriques indiquant la qualité d'un modèle. Evaluateur Description BinaryClassificationEvaluator Évaluateur de modèles de classification binaire ClusteringEvaluator Évaluateur de modèles de clustering MulticlassClassificationEvaluator Évaluateur de modèles de classification multiclasse RegressionEvaluator Évaluateur de modèles de régression
  • 69. Spark ML- Pipelines – Pipeline: un pipeline chaîne plusieurs transformateurs et estimateurs ensemble pour spécifier un flux de travail ML.
  • 72. Spark ML Model Selection Demo
  • 73. Delta Lake • Delta Lake est une couche de stockage open source qui apporte de la fiabilité aux lacs de données Data Lake. • Delta Lake fournit des transactions ACID, une gestion évolutive des métadonnées et unifie le streaming et le traitement des données par lots. • Delta Lake fonctionne au-dessus de votre lac de données existant et est entièrement compatible avec les API Apache Spark.