outils pour la data science spark - methodes-et...
Post on 10-Sep-2018
228 Views
Preview:
TRANSCRIPT
Outils pour la Data Science
Spark
Anne GAYET
agayet@aid.fr
Rendez-vous SFDS Méthodes et Logiciel
Jeudi 7 avril 2016
CRM Services
30 BDD marketing B2B, B2C
200M de clients
5 milliards de transactions
Référentiels client unique
Data Quality
Data Visualisation
Datamining & Textmining
Webmining
Segmentation
Scoring
Plans Tests
Clients en partance
Pression Commerciale
Datakili®
Plate-forme SaaS
Datalake
Analyse parcours clients
Data Lab’
Outils big data
Conseil et cadrage projets Outils
Séminaires découverte
Méthodes
AID: EXPERT DEPUIS 40 ANS DE L’ANALYSE ET VALORISATION DES DATA CLIENTS
Tracking de tweets
Nuages de mots
intelligents / interactifs
Enrichissement profils
client à partir
de verbatims
AID Academy
Marketing & Fidélisation
Big data, Gestion de projet
Chez vous
En mode hébergé
Né en 2009, devenu « top level project Apache » en 2014
Utilisé en production par de nombreuses entreprises de tout type
En test ou PoT dans de nombreuses entreprises françaises
Utilisé chez AID dans une plateforme qui intègre, visualise et analyse les parcours clients cross canaux
3
SPARK – 100% OPEN SOURCE ET MATURE
Plateforme datakili®
SFDS 7/4/2016 Anne GAYET
SFDS 7/4/2016 Anne GAYET 4
2015: UNE GRANDE ANNÉE POUR SPARK
Moteur de calcul distribué, mais pas de stockage
Fonctionne in-memory beaucoup plus rapide qu’Hadoop / MapReduce qui travaille sur les disques
API pour scripts Java, Scala, Python, R (récemment)
Bibliothèques pour SQL, flux temps réel, machine learning, …
Utilisé seul (avec un système de fichier) ou intégré à Hadoop, Cassandra, MongoDB, …
SFDS 7/4/2016 Anne GAYET
SPARK, LES GRANDS PRINCIPES
5
Time to sort 100TB
6
RAPIDE COMMENT ?
Source: Daytona GraySort benchmark, sortbenchmark.org
2100 machines 2013 Record:
Hadoop
72 minutes
2014 Record:
Spark
207 machines
23 minutes
SFDS 7/4/2016 Anne GAYET
{JSON}
Data Sources
Spark Core
Spark
Streaming
Spark
SQL MLlib GraphX
RDD API
DataFrames API
7 SFDS 7/4/2016 Anne GAYET
Le format « de base » des données dans Spark, c’est le RDD
(Resilient Distributed Dataset)
il permet de gérer des ensembles de (clé, valeur)
distributed: RAS
resilient: peut être partiellement relu si problème
Soit la distribution se fait « par défaut », soit on la contrôle
si on a l’intention de faire des join ou groupeby, mieux vaut
contrôler
SFDS 7/4/2016 Anne GAYET
LES FORMATS DANS SPARK: LES RDD
8
il y a les transformations:
prend un RDD fait la transfo sort un RDD
il y a les actions: prend un RDD sort une valeur
fonctionnement: « lazy transformation » ou « évaluation paresseuse »
1) on prévoit les transformations, elles restent en attente
2) c’est la réalisation d’une action qui commande la réalisation des
transformations
SFDS 7/4/2016 Anne GAYET
LES ÉTAPES D’UN TRAITEMENT EN SPARK
9
exemple
scala> val texteLicence = sc.textFile("file:///home/cloudera/tpintro/LICENSE")
scala> val longueursLignes = texteLicence.map(l => l.length)
scala> longueursLignes.reduce((a, b) => a + b)
Les données ne sont pas chargées en mémoire après la première ligne, longueursLignes
n’est pas construit immédiatement après la transformation map de la seconde ligne, ce
n’est qu’au moment où l’action reduce doit être exécutée que Spark partitionne les calculs
à faire en tâches pour les différentes machines (et/ou cœurs) et chaque machine (et/ou
cœur) exécute sa partie de map et de reduce, avant de retourner la réponse
SFDS 7/4/2016 Anne GAYET
EXEMPLE EN SCALA
pour en savoir plus http://cedric.cnam.fr/vertigo/Cours/RCP216/tpSparkScala.html
10
DataFrame, à ne pas confondre avec les data frame de R
Correspond à une « table » avec des champs
On peut « faire » du Spark SQL dessus !
SFDS 7/4/2016 Anne GAYET 11
LES FORMATS DANS SPARK: LES DATAFRAMES
Type Time Msg (Str) (Int) (Str)
Error ts msg1
Warn ts msg2
Error ts msg1
Type Time Msg (Str) (Int) (Str)
Info ts msg7
Warn ts msg2
Error ts msg9
Type Time Msg (Str) (Int) (Str)
Warn ts msg0
Warn ts msg2
Info ts msg11
Type Time Msg (Str) (Int) (Str)
Error ts msg1
Error ts msg3
Error ts msg1
Error, ts, msg1 Warn, ts, msg2 Error, ts, msg1
Info, ts, msg8 Warn, ts, msg2 Info, ts, msg8
Error, ts, msg3 Info, ts, msg5 Info, ts, msg5
Error, ts, msg4 Warn, ts, msg9 Error, ts, msg1
RDD
4 partitions
Data
Frame
… avec de nombreuses sources de données
12
DES API PERMETTENT DE LIRE ET ÉCRIRE DES DATAFRAMES
12
{ JSON } JDBC
etc …
voir http://spark-packages.org
SFDS 7/4/2016 Anne GAYET
SFDS 7/4/2016 Anne GAYET
ALGORITHMES DE SPARK MLLIB
13
Basic statistics summary statistics
correlations
stratified sampling
hypothesis testing
streaming significance testing
random data generation
Dimensionality reduction
singular value decomposition (SVD)
principal component analysis (PCA)
Clustering
k-means
Gaussian mixture
power iteration clustering (PIC)
latent Dirichlet allocation (LDA)
bisecting k-means
streaming k-means
Collaborative filtering
alternating least squares (ALS)
Classification and regression
linear models (SVMs, logistic regression,
linear regression)
naive Bayes
decision trees
ensembles of trees (Random Forests and
Gradient-Boosted Trees)
isotonic regression
Feature extraction and transformation
Frequent pattern mining
FP-growth
association rules
PrefixSpan
Evaluation metrics
PMML model export
Optimization (developer)
stochastic gradient descent
limited-memory BFGS (L-BFGS)
déjà un algo de séquences
fréquentes ! ça va vite …
pour échanger des modèles
avec d’autres logiciels de
datamining
le dernier né (juin 2015) avec Spark 1.4
Spark utilisable depuis Rstudio
dplyr-like
select, $, where, filter groupBy, summarize, arrange ….
création de data frames: read.df, write.df
mixe possible avec du SQL
SFDS 7/4/2016 Anne GAYET 14
SPARKR
# Loading distributed data
df <- read.df(“hdfs://bigdata/logs”, source = “json”)
# Distributed filtering and aggregation
errors <- subset(df, df$type == “error”)
counts <- agg(groupBy(errors, df$code), num = count(df$code))
# Collecting and plotting small data
qplot(code, num, data = collect(counts), geom = “bar”, stat = “identity”) + coord_flip()
# Register DataFrame as a table
registerTempTable(df, “dataTable”)
# Complex SQL query, result is returned as another DataFrame
aggCount <- sql(sqlContext, “select count(*) as num, type, date group by type order by date
desc”)
qplot(date, num, data = collect(aggCount), geom = “line”)
SFDS 7/4/2016 Anne GAYET 15
SPARKR: EXEMPLE
source Enabling exploratory data science with Spark and R , Databricks
c’est du micro-batch: le flux continu est découpé en petits lots
SFDS 7/4/2016 Anne GAYET 16
SPARK STREAMING
spark
streaming data stream spark
lots input lots output
découpage
temporel
(intervalle de temps) système de fenêtres glissantes
pour pouvoir traiter
plusieurs lots ensemble
fenêtres aux temps 1-3-5 ….
cumuls de 3 tous les 2 intervalles
comptage sur les clients de databricks
SFDS 7/4/2016 Anne GAYET 17
VERSIONNING FRÉQUENT
2002 – MapReduce @ Google
2004 – MapReduce paper
2006 – Hadoop @ Yahoo
2008 – Hadoop Summit
2010 – Spark paper
2011 – Hadoop 1.0 GA
2014 – Apache Spark top-level
2014 – 1.2.0 release in December
2015 – 1.3.0 release in March
2015 – 1.4.0 release in June
2015 – 1.5.0 release in September
2016 – 1.6.0 release in January
2016 – major release in April / May
Démo Spark-scala
On est dans une VM (virtual machine), le système d’exploitation est Ubuntu
on fait donc « comme si » on était sur un cluster
On va utiliser du code Scala dans Spark, langage plus concis que le java
On utilise la « surcouche » Zeppelin pour rendre Spark plus agréable : c’est un peu comme Rstudio pour R
sinon c’est du spark-shell (un peu comme DOS dans le temps)
on peut ainsi mettre des titres, des commentaires, et faire des visualisations simples
on appelle ça un « notebook »
SFDS 7/4/2016 Anne GAYET
L’ENVIRONNEMENT
19
ici parcours =
visites sur un site web
SFDS 7/4/2016 Anne GAYET
OBJECTIF = REPRÉSENTATION DES PARCOURS LES PLUS PROBABLES
20
en vert le tunnel
d’achat
zone
« institutionnelle » en rose les
consultations produits
pages ramenant à
la home
ici la sortie
(volontairement
ajoutée comme page)
services / retour
Etape 1 : reconstitution des séquences = parcours complets = visites
Etape 2 : construction des paires de pages consécutives
Etape 3 : comptage des pages et des paires de pages
Etape 4 : calcul des probabilités de transition
Etape 5 : calcul des probabilités max, identification des « chaînons »
Représentation des parcours les plus probables (hors Spark)
SFDS 7/4/2016 Anne GAYET
PARCOURS LES PLUS PROBABLES = ENCHAINEMENT DE « CHAÎNONS »
ORIGINE VERS DESTINATION LA PLUS PROBABLE DEPUIS CETTE ORIGINE
21
top related