présentation - Rendez-vous Méthodes et Logiciels

Transcription

présentation - Rendez-vous Méthodes et Logiciels
Rendez-vous SFDS Méthodes et Logiciel
Jeudi 7 avril 2016
Outils pour la Data Science
Spark
Anne GAYET
[email protected]
AID: EXPERT DEPUIS 40 ANS DE L’ANALYSE ET VALORISATION DES DATA CLIENTS
CRM Services
 30 BDD marketing B2B, B2C
 200M de clients
 5 milliards de transactions
 Référentiels client unique
 Data Quality
 Data Visualisation
Datakili®
Datamining & Textmining
 Webmining
 Segmentation
 Scoring
 Plans Tests
 Clients en partance
 Pression Commerciale
Chez vous
Conseil et cadrage projets
Marketing & Fidélisation
Big data, Gestion de projet
 Plate-forme SaaS
 Datalake
 Analyse parcours clients
 Data Lab’
 Outils big data
 Tracking de tweets
 Nuages de mots
intelligents / interactifs
 Enrichissement profils
client à partir
de verbatims
En mode hébergé
AID Academy
 Outils
 Séminaires découverte
 Méthodes
SPARK – 100% OPEN SOURCE ET MATURE
Né en 2009, devenu « top level project Apache »
en 2014
Plateforme
datakili®
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
SFDS 7/4/2016
Anne GAYET
3
2015: UNE GRANDE ANNÉE POUR SPARK
SFDS 7/4/2016
Anne GAYET
4
SPARK, LES GRANDS PRINCIPES
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
5
RAPIDE COMMENT ?
Time to sort 100TB
2013 Record:
Hadoop
2100 machines
72 minutes
2014 Record:
Spark
207 machines
Source: Daytona GraySort benchmark, sortbenchmark.org
23 minutes
SFDS 7/4/2016
Anne GAYET
6
DataFrames API
Spark
SQL
Spark
Streaming
MLlib
GraphX
RDD API
Spark Core
Data Sources
{JSON}
SFDS 7/4/2016
Anne GAYET
7
LES FORMATS DANS SPARK: LES RDD
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
8
LES ÉTAPES D’UN TRAITEMENT EN SPARK
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
9
EXEMPLE EN SCALA
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
pour en savoir plus http://cedric.cnam.fr/vertigo/Cours/RCP216/tpSparkScala.html
SFDS 7/4/2016
Anne GAYET
10
LES FORMATS DANS SPARK: LES DATAFRAMES
DataFrame, à ne pas confondre avec les data frame de R
Correspond à une « table » avec des champs
On peut « faire » du Spark SQL dessus !
Error, ts, msg1
Warn, ts, msg2
Error, ts, msg1
RDD
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
4 partitions
Data
Frame
Type
Time
Msg
Type
Time
Msg
Type
Time
(Int)
(Str)
Msg
Type
(Str)
(Str)
(Int)
(Str)
Time
Msg
(Str)
(Int)
(Str)
(Str)
(Int)
(Str)
Error
Warn
Error
ts
ts
ts
Info
Warn
Error
ts
ts
ts
Warn
Warn
Info
ts
ts
ts
msg0
msg2
msg11
Error
Error
Error
ts
ts
ts
SFDS 7/4/2016
msg1
msg2
msg1
Anne GAYET
msg7
msg2
msg9
msg1
msg3
msg1
11
DES API PERMETTENT DE LIRE ET ÉCRIRE DES DATAFRAMES
… avec de nombreuses sources de données
{ JSON }
JDBC
etc …
voir http://spark-packages.org
SFDS 7/4/2016
Anne GAYET
12
12
ALGORITHMES DE SPARK MLLIB
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
SFDS 7/4/2016
Anne GAYET
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
déjà un algo de séquences
association rules
fréquentes ! ça va vite …
PrefixSpan
Evaluation metrics
pour échanger des modèles
PMML model export
avec d’autres logiciels de
Optimization (developer)
datamining
stochastic gradient descent
limited-memory BFGS (L-BFGS)
13
SPARKR
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: EXEMPLE
# 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”)
source Enabling exploratory data science with Spark and R , Databricks
SFDS 7/4/2016
Anne GAYET
15
SPARK STREAMING
c’est du micro-batch: le flux continu est découpé en petits lots
lots input
data stream
spark
streaming
lots output
spark
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
SFDS 7/4/2016
Anne GAYET
16
VERSIONNING FRÉQUENT
comptage sur les clients de databricks
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
SFDS 7/4/2016
Anne GAYET
17
Démo Spark-scala
L’ENVIRONNEMENT
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
19
OBJECTIF = REPRÉSENTATION DES PARCOURS LES PLUS PROBABLES
ici parcours =
visites sur un site web
en vert le tunnel
d’achat
pages ramenant à
la home
ici la sortie
(volontairement
ajoutée comme page)
en rose les
consultations produits
zone
« institutionnelle »
services / retour
SFDS 7/4/2016
Anne GAYET
20
PARCOURS LES PLUS PROBABLES = ENCHAINEMENT DE « CHAÎNONS »
ORIGINE VERS DESTINATION LA PLUS PROBABLE DEPUIS CETTE ORIGINE
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
21