Outils pour la Data Science Spark - methodes-et...

21
Outils pour la Data Science Spark Anne GAYET [email protected] Rendez-vous SFDS Méthodes et Logiciel Jeudi 7 avril 2016

Transcript of Outils pour la Data Science Spark - methodes-et...

Page 1: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

Outils pour la Data Science

Spark

Anne GAYET

[email protected]

Rendez-vous SFDS Méthodes et Logiciel

Jeudi 7 avril 2016

Page 2: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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é

Page 3: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 4: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

SFDS 7/4/2016 Anne GAYET 4

2015: UNE GRANDE ANNÉE POUR SPARK

Page 5: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 6: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 7: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

{JSON}

Data Sources

Spark Core

Spark

Streaming

Spark

SQL MLlib GraphX

RDD API

DataFrames API

7 SFDS 7/4/2016 Anne GAYET

Page 8: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 9: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 10: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 11: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 12: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

… 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

Page 13: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 14: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 15: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

# 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

Page 16: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 17: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 18: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

Démo Spark-scala

Page 19: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 20: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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

Page 21: Outils pour la Data Science Spark - methodes-et …methodes-et-logiciels.sfds.asso.fr/wp-content/uploads/2016/04/AID... · On va utiliser du code Scala dans Spark, langage plus concis

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