SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
www.bluestone.fr
55 rue du Faubourg Montmartre – 75009 Paris
+33 (0)1 53 25 02 10
contact@bluestone.fr
BS TEMPLATE 20120625
BASTIEN RIERA
Contexte
Qu’est-ce que le Big Data ?
Hadoop
RHadoop
Le MapReduce en pratique
Pour aller plus loin
Hollande vs Sarkozy
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 2
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 3
 Stage de fin d’étude :
 Ensai 2012 – Marketing quantitatif et gestion de la relation client
 Bluestone Consulting – Maître de stage : Julien Damon
 Monitoring de la campagne présidentielle sur Twitter
 Étude de l’influence de François Hollande et Nicolas Sarkozy
 Analyse statistique en environnement Big Data
 Choix du logiciel R
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 5
 « La Big Data est caractérisée par une accumulation
continue de tous les types de données atteignant une taille
et un niveau de granularité difficile à exploiter »
(Zouheir Guédri – Mars 2012)[1]
 Les quatre V du Big Data (Alex Popescu – Fev 2012)[2] :
 Volume
 Variété
 Vitesse
 Valeur
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 6
 Volume :
 2011 : 1,8 ZettaOctet[3] au niveau mondial
 Réseaux Sociaux : 400 millions de tweets publiés par jour en 2012[4]
 Variété :
 Structuré / Non structuré
 Open Data
 Réseaux Sociaux
 Vitesse :
 Flux d’information
 Valeur :
 5% des données sont compatibles avec l’analyse décisionnelle[3]
 Open Data
 API
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 8
 Open-source, fondation Apache
 Exploité par : Microsoft, IBM, Oracle, EMC, …
 Avantages
 Stockage et calculs distribués
 Nombre de nœuds évolutif
 Fiable face aux défaillances matérielles
 Inconvénients
 Pas d’interface utilisateur
 Aucune méthode d’analyse statistique
 Hadoop Distributed File System (HDFS)
 Division par bloc
 Stockage distribué
 MapReduce
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 10
 RHadoop
 RevolutionAnalytics (Github)
 Trois package R, rhbase, rhdfs, rmr
 MapReduce : rmr
 Avantages
 Environnement R[5]
 Transparent
 Définition des fonctions Map et Reduce
 Deux environnements : « local » et « hadoop »
 Inconvénients
 Peu de méthodes directement implémentées
 Gestion des erreurs
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 11
rmr
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 13
 Association clef/valeur
 Dualité Map/Reduce
 Map = une observation
 Reduce = agrégation
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 14
map=function(k,v){
…
k’= …
v’= …
keyval(k’,v’)
}
reduce = function(k’,list_v’){
…
k’’= …
v’’= …
keyval(k’’, v’’)
}
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 15
 Association clef/valeur
 Dualité Map/Reduce
 Map = une observation
 Reduce = agrégation
 Nombre de tweets :
Map
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 16
 Association clef/valeur
 Dualité Map/Reduce
 Map = une observation
 Reduce = agrégation
 Nombre de tweets :
ReduceMap
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,1>
<NULL,11>
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 17
mapreduce(input=input,
map=function(k,v){
k’ = NULL
v’ = 1
keyval(k’, v’)
},
reduce = function(k’,list_v’){
k’’ = NULL
v’’= sum(unlist(list_v’))
keyval(k’’,v’’)
}
)
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 18
 Nombre de tweets par utilisateur :
Map
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id1,1>
<id2,1>
<id3,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id3,1>
<id2,1>
<id1,1>
<id2,1>
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 19
 Nombre de tweets par utilisateur :
Map
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id1,1>
<id2,1>
<id3,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id3,1>
<id2,1>
<id1,1>
<id2,1>
 Map
 Clef :
identifiant utilisateur
 Valeur : 1
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 20
 Nombre de tweets par utilisateur :
Regroupement
AutomatiqueMap
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id1,1>
<id2,1>
<id3,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id3,1>
<id2,1>
<id1,1>
<id2,1>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id2,1>
<id2,1>
<id2,1>
<id3,1>
<id3,1>
 Map
 Clef :
identifiant utilisateur
 Valeur : 1
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 21
 Nombre de tweets par utilisateur :
Regroupement
AutomatiqueMap Reduce
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id1,1>
<id2,1>
<id3,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id3,1>
<id2,1>
<id1,1>
<id2,1>
<id2,4>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id2,1>
<id2,1>
<id2,1>
<id3,1>
<id3,1>
<id3,2>
<id1,5>
<id1,5>
<id2,4>
<id3,2>
 Map
 Clef :
identifiant utilisateur
 Valeur : 1
 Reduce
 Agrégation par clef
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 22
mapreduce(input = input ,
map=function(k,v){
k’ = v$user$id_str
v’ = 1
keyval(k’, v’)
},
reduce = function(k,list_v){
keyval(k, sum(unlist(list_v)))
}
)
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 23
 Nombre de tweets moyen par utilisateur :
Reduce 1Regroupement
Automatique
Map
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id1,1>
<id2,1>
<id3,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id3,1>
<id2,1>
<id1,1>
<id2,1>
<NULL,5>
<NULL,4>
<NULL,2>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id2,1>
<id2,1>
<id2,1>
<id3,1>
<id3,1>
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 24
 Nombre de tweets moyen par utilisateur :
Reduce 1Regroupement
Automatique
Map
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id1,1>
<id2,1>
<id3,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id3,1>
<id2,1>
<id1,1>
<id2,1>
<NULL,5>
<NULL,4>
<NULL,2>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id2,1>
<id2,1>
<id2,1>
<id3,1>
<id3,1>
 Reduce 1 :
 Agrégation par clef
 Changement de clef
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 25
 Nombre de tweets moyen par utilisateur :
Reduce 2Reduce 1Regroupement
Automatique
Map
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id1,1>
<id2,1>
<id3,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id3,1>
<id2,1>
<id1,1>
<id2,1>
<NULL,5>
<NULL,4>
<NULL,2>
<NULL, 3.7>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id1,1>
<id2,1>
<id2,1>
<id2,1>
<id2,1>
<id3,1>
<id3,1>
 Reduce 1 :
 Agrégation par clef
 Changement de clef
 Reduce 2 :
 Moyenne sur tous
les individus
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 26
input2=mapreduce( input = input ,
map= function(k,v) {
keyval(v$user$id_str,1)
},
reduce = function(k,list_v){
keyval(NULL, sum(unlist(list_v)))
}
)
mapreduce(input=input2,
reduce=function(k,list_v){
keyval(k,mean(unlist(list_v)))
}
)
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 28
 Étude de l’influence sur Twitter
 Début : 19 mars 2012
 (publication de la liste des candidats)
 Fin : 5 mai 2012
 (la veille des résultats du second tour)
 130 mots clefs
 16 millions de tweets récoltés
 4 500 000 utilisateurs
 53 Go
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 29
{ "_id":{ "$oid": "4f625e47e2a3f33c79000002" },
"truncated":false,
"retweet_count":0,
"source":"web",
"user":{ "screen_name":"Expat00007",
"followers_count":0,
"time_zone":"Amsterdam",
"location":null,
"lang":"fr",
"profile_image_url_https":"https://si0.twimg.com/sticky/default_profile_images/default_profile_5_normal.png",
"name":"Expat00007",
"id":525747899,
"geo_enabled":false,
"created_at":"Thu Mar 15 21:02:35 +0000 2012",
"friends_count":0,
"id_str":"525747899",
"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_5_normal.png" },
"place":null,
"geo":null,
"text":"#FH réveille toi, Sarkozy lui, envoyait sévère, il a du punch, il répond du tac o tac, il sait de quoi il parle... il tergiverse pas !",
"coordinates":null,
"created_at":"Thu Mar 15 21:25:27 +0000 2012",
"entities":{ "hashtags": [{ "text":"FH",
"indices":[0,3] }],
"urls":[],
"user_mentions":[]},
"id":180404368162570240,
"id_str":"180404368162570240" }
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 30
 F. Hollande :
 1er personne
 Candidat sortant
 N. Sarkozy :
 3eme personne
 @fhollande
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 31
 F. Hollande :
 1er personne
 Candidat sortant
 #rennes…
 N. Sarkozy :
 3eme personne
 @fhollande
 #dpda…
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 32
 F. Hollande :
 228 776
 N. Sarkozy :
 174 967
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 33
Nombre de
Tweets
Nombre de
Retweets
Nombre de tracts
équivalent
François Hollande 712 30 854 12 107 411
Nicolas Sarkozy 609 42 796 13 769 105
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 35
 Structure des retweets
 Estimation de la matrice « qui a retweeté qui »
 Matrice stochastique
 Matrice creuse de dimension 4 500 000 * 4 500 000
 Évolution d’une mesure de probabilité
 Produit matriciel
 Mesure récursive du pouvoir d’influence
 Prise en compte de la capacité d’influence des proches
 Convergence itérative
 Solution unique
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 36
 François Hollande : 12eme
 Nicolas Sarkozy : 14eme
 Analystes politiques :
 Le Véritomètre (rang 3)
 Owni (rang 4)
 Journalistes :
 Soren Seelow (rang 24)
 Leparmentier Arnaud (rang 26)
 Politiques :
 Vincent Feltesse (rang 17)
 Jean-Luc Mélenchon (rang 20)
 Etrangers :
 Barack Obama (rang 6-7)
 Breaking news (rang 13)
 …
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 37
 Structure des retweets
 Estimation de la matrice « qui a retweeté qui »
 Matrice stochastique
 Matrice creuse de dimension 4 500 000 * 4 500 000
 Évolution d’une mesure de probabilité
 Produit matriciel
 Mesure récursive du pouvoir d’influence
 Prise en compte de la capacité d’influence des proches
 Convergence itérative
 Solution unique
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 38
Regroupement
Automatique
Map
tweet1
tweet2
tweet3
tweet4
tweet5
tweet6
tweet7
tweet8
tweet9
tweet10
tweet11
<id_Retweeter1,id_Author4>
<id_Retweeter2,id_Author4>
<id_Retweeter1,id_Author6>
<id_Retweeter1,id_Author6>
<id_Retweeter3,id_Author4>
<id_Retweeter3,id_Author5>
<id_Retweeter1,id_Author4>
<id_Retweeter1,id_Author6>
<id_Retweeter1,id_Author6>
<id_Retweeter2,id_Author4>
<id_Retweeter3,id_Author4>
<id_Retweeter3,id_Author5>
…
…
…
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 39
mapreduce(input=input,
map=function(k,v){
if(is.null(v$retweeted_status$user$id_str)){return()}
else{
retweeteur=v$user$id_str
retweete=v$retweeted_status$user$id_str
keyval(retweeteur,retweete)
}
},
…
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 40
Reduce
id_author4 | id_author6
<id_Retweeter1, 0.333 | 0.667 >…
…
…
id_author4 |
<id_Retweeter2, 1 | >
id_author4 | id_author5
<id_Retweeter1, 0.5 | 0.5 >
Matrice creuse
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 41
mapreduce(input=input,
map=function(k,v){
if(is.null(v$retweeted_status$user$id_str)){return()}
retweeteur=v$user$id_str
retweete=v$retweeted_status$user$id_str
keyval(retweeteur,retweete)
},
reduce=function(k,vv){
keyval(k,table(unlist(vv))/length(vv))
}
)
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 42
Matrice creuse
clef : id_Retweeter
valeur : data.frame :
(id_user, coefficient)
Vecteur de score d’influence
clef : id_user
valeur : score
Reduce
Reduce
Equijoin()
(Jointure sur les clefs)
Clef : id_Retweeter
Valeur 1 : (id_user, coefficient)
Valeur 2 : (score)
Clef : id_user
Valeur : coefficient*score
Nouveau vecteur de score
Clef : id_user
Valeur : nouveau_score = SUM(coefficient*score)
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 43
tmp=equijoin(
left.input=score,
right.input=matrice,
outer="left",
#map.right=function(…)
#map.left=function(…)
reduce.all=function(k, v.left, v.right){
k’=unlist(v.right[,1])
v’=unlist(as.numeric(v.right[,2])*as.numeric(v.left))
keyval(k’,v’)
}
)
mapreduce(
input=tmp,
reduce=function(k,v){
keyval(k’,sum(unlist(v’))
}
)
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 44
Autres fonctions R disponibles dans le package rmr
mapreduce(…)
Cadre fonctionnel permettant de définir
et de réaliser les traitements au format
MapReduce.
rmr.str(…) Équivalent de la fonction str() de R
rmr.sample(input, output = NULL, method = c("any", "Bernoulli"), ...)
Réalise des échantillonnages aléatoires
dans les fichiers de l’hdfs.
On peut y définir un effectif cible ou une
probabilité d’échantillonnage.
equijoin(…)
Permet de réaliser des jointures en
MapReduce (cf. exemple)
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 45
1. Zouheir Guédri
 Congrès BigData Paris. (2012)
2. Alex Popescu
 Big data causes concern and big confusion. A big data definition to help
clarify the confusion. (2012)
3. Stephane Fermigier
 Big data & open source : une convergence inévitable ? (2012)
4. Semiocast
 Twitter reaches half a billion accounts - More than 140 millions in the U.S.
(2012)
5. R development core team
 R : A language and environment for statistical computing. (2008) (3-900051-
07-0)
6. Michael Eisermann
1. Comment fonctionne Google ? (2009)

Contenu connexe

En vedette

Fltau r interface
Fltau r interfaceFltau r interface
Fltau r interface
Cdiscount
 
R aux enquêtes de conjoncture
R aux enquêtes de conjonctureR aux enquêtes de conjoncture
R aux enquêtes de conjoncture
francoismarical
 
Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)
Cdiscount
 
Dataiku r users group v2
Dataiku   r users group v2Dataiku   r users group v2
Dataiku r users group v2
Cdiscount
 
State Space Model
State Space ModelState Space Model
State Space Model
Cdiscount
 
Paris2012 session3b
Paris2012 session3bParis2012 session3b
Paris2012 session3b
Cdiscount
 
Paris2012 session2
Paris2012 session2Paris2012 session2
Paris2012 session2
Cdiscount
 
Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06
Cdiscount
 
Scm prix blé_2012_11_06
Scm prix blé_2012_11_06Scm prix blé_2012_11_06
Scm prix blé_2012_11_06
Cdiscount
 
Paris2012 session4
Paris2012 session4Paris2012 session4
Paris2012 session4
Cdiscount
 

En vedette (20)

Fltau r interface
Fltau r interfaceFltau r interface
Fltau r interface
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec R
 
R aux enquêtes de conjoncture
R aux enquêtes de conjonctureR aux enquêtes de conjoncture
R aux enquêtes de conjoncture
 
Introduction à la cartographie avec R
Introduction à la cartographie avec RIntroduction à la cartographie avec R
Introduction à la cartographie avec R
 
HADOOP + R
HADOOP + RHADOOP + R
HADOOP + R
 
Integrating R, knitr, and LaTeX via RStudio
Integrating R, knitr, and LaTeX via RStudioIntegrating R, knitr, and LaTeX via RStudio
Integrating R, knitr, and LaTeX via RStudio
 
Première approche de cartographie sous R
Première approche de cartographie sous RPremière approche de cartographie sous R
Première approche de cartographie sous R
 
Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)
 
Incorporer du C dans R, créer son package
Incorporer du C dans R, créer son packageIncorporer du C dans R, créer son package
Incorporer du C dans R, créer son package
 
Dataiku r users group v2
Dataiku   r users group v2Dataiku   r users group v2
Dataiku r users group v2
 
Cartographie - Introduction générale
Cartographie - Introduction généraleCartographie - Introduction générale
Cartographie - Introduction générale
 
State Space Model
State Space ModelState Space Model
State Space Model
 
Paris2012 session1
Paris2012 session1Paris2012 session1
Paris2012 session1
 
Paris2012 session3b
Paris2012 session3bParis2012 session3b
Paris2012 session3b
 
Paris2012 session2
Paris2012 session2Paris2012 session2
Paris2012 session2
 
Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06
 
Scm prix blé_2012_11_06
Scm prix blé_2012_11_06Scm prix blé_2012_11_06
Scm prix blé_2012_11_06
 
Robust sequentiel learning
Robust sequentiel learningRobust sequentiel learning
Robust sequentiel learning
 
Paris2012 session4
Paris2012 session4Paris2012 session4
Paris2012 session4
 
Scm risques
Scm risquesScm risques
Scm risques
 

Similaire à Big data with r

Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Denodo
 
Visualisation des données : Mobile 2.0 09/03/2011
Visualisation des données : Mobile 2.0 09/03/2011Visualisation des données : Mobile 2.0 09/03/2011
Visualisation des données : Mobile 2.0 09/03/2011
François-Xavier Cardi
 
Matinée 01 Big Data
Matinée 01 Big DataMatinée 01 Big Data
Matinée 01 Big Data
Evenements01
 
LIVRE BLANC - Les vrais chiffres du Big Data
LIVRE BLANC - Les vrais chiffres du Big DataLIVRE BLANC - Les vrais chiffres du Big Data
LIVRE BLANC - Les vrais chiffres du Big Data
Inetum
 

Similaire à Big data with r (20)

Utilisation potentielle de R dans un institut de statistique publique
Utilisation potentielle de R dans un institut de statistique publiqueUtilisation potentielle de R dans un institut de statistique publique
Utilisation potentielle de R dans un institut de statistique publique
 
Escen221019
Escen221019Escen221019
Escen221019
 
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
 
02 inspire siglr_v2
02 inspire siglr_v202 inspire siglr_v2
02 inspire siglr_v2
 
Support formation vidéo : Bienvenue au monde du BigData (1)
Support formation vidéo : Bienvenue au monde du BigData (1)Support formation vidéo : Bienvenue au monde du BigData (1)
Support formation vidéo : Bienvenue au monde du BigData (1)
 
Analyse du RSN "Plazza" et de la communication d'Orange
Analyse du RSN "Plazza" et de la communication d'OrangeAnalyse du RSN "Plazza" et de la communication d'Orange
Analyse du RSN "Plazza" et de la communication d'Orange
 
Analytics et Big Data : accélérer la génération de valeur par la convergence ...
Analytics et Big Data : accélérer la génération de valeur par la convergence ...Analytics et Big Data : accélérer la génération de valeur par la convergence ...
Analytics et Big Data : accélérer la génération de valeur par la convergence ...
 
Le projet Openstreetmap en 2020
Le projet Openstreetmap en 2020Le projet Openstreetmap en 2020
Le projet Openstreetmap en 2020
 
Université d'été de la DFCG - Parlez-vous Big Data ? Guide de conversation po...
Université d'été de la DFCG - Parlez-vous Big Data ? Guide de conversation po...Université d'été de la DFCG - Parlez-vous Big Data ? Guide de conversation po...
Université d'été de la DFCG - Parlez-vous Big Data ? Guide de conversation po...
 
Retour d'expérience - Credit.fr
Retour d'expérience - Credit.frRetour d'expérience - Credit.fr
Retour d'expérience - Credit.fr
 
Rennes open data week 14 10 2015 francais
Rennes open data week 14 10 2015 francaisRennes open data week 14 10 2015 francais
Rennes open data week 14 10 2015 francais
 
Nuit du Big Data, 10 Décembre 2014
Nuit du Big Data, 10 Décembre 2014Nuit du Big Data, 10 Décembre 2014
Nuit du Big Data, 10 Décembre 2014
 
SPA avec SignalR et Angular Js
SPA avec SignalR et Angular JsSPA avec SignalR et Angular Js
SPA avec SignalR et Angular Js
 
Visualisation des données : Mobile 2.0 09/03/2011
Visualisation des données : Mobile 2.0 09/03/2011Visualisation des données : Mobile 2.0 09/03/2011
Visualisation des données : Mobile 2.0 09/03/2011
 
Big Data
Big DataBig Data
Big Data
 
Keynote weborama
Keynote weboramaKeynote weborama
Keynote weborama
 
Notre expertise Open Source
Notre expertise Open SourceNotre expertise Open Source
Notre expertise Open Source
 
Matinée 01 Big Data
Matinée 01 Big DataMatinée 01 Big Data
Matinée 01 Big Data
 
LIVRE BLANC - Les vrais chiffres du Big Data
LIVRE BLANC - Les vrais chiffres du Big DataLIVRE BLANC - Les vrais chiffres du Big Data
LIVRE BLANC - Les vrais chiffres du Big Data
 
Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"
 

Big data with r

  • 1. www.bluestone.fr 55 rue du Faubourg Montmartre – 75009 Paris +33 (0)1 53 25 02 10 contact@bluestone.fr BS TEMPLATE 20120625 BASTIEN RIERA
  • 2. Contexte Qu’est-ce que le Big Data ? Hadoop RHadoop Le MapReduce en pratique Pour aller plus loin Hollande vs Sarkozy BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 2
  • 3. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 3  Stage de fin d’étude :  Ensai 2012 – Marketing quantitatif et gestion de la relation client  Bluestone Consulting – Maître de stage : Julien Damon  Monitoring de la campagne présidentielle sur Twitter  Étude de l’influence de François Hollande et Nicolas Sarkozy  Analyse statistique en environnement Big Data  Choix du logiciel R
  • 4.
  • 5. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 5  « La Big Data est caractérisée par une accumulation continue de tous les types de données atteignant une taille et un niveau de granularité difficile à exploiter » (Zouheir Guédri – Mars 2012)[1]  Les quatre V du Big Data (Alex Popescu – Fev 2012)[2] :  Volume  Variété  Vitesse  Valeur
  • 6. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 6  Volume :  2011 : 1,8 ZettaOctet[3] au niveau mondial  Réseaux Sociaux : 400 millions de tweets publiés par jour en 2012[4]  Variété :  Structuré / Non structuré  Open Data  Réseaux Sociaux  Vitesse :  Flux d’information  Valeur :  5% des données sont compatibles avec l’analyse décisionnelle[3]  Open Data  API
  • 7.
  • 8. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 8  Open-source, fondation Apache  Exploité par : Microsoft, IBM, Oracle, EMC, …  Avantages  Stockage et calculs distribués  Nombre de nœuds évolutif  Fiable face aux défaillances matérielles  Inconvénients  Pas d’interface utilisateur  Aucune méthode d’analyse statistique  Hadoop Distributed File System (HDFS)  Division par bloc  Stockage distribué  MapReduce
  • 9.
  • 10. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 10  RHadoop  RevolutionAnalytics (Github)  Trois package R, rhbase, rhdfs, rmr  MapReduce : rmr  Avantages  Environnement R[5]  Transparent  Définition des fonctions Map et Reduce  Deux environnements : « local » et « hadoop »  Inconvénients  Peu de méthodes directement implémentées  Gestion des erreurs
  • 11. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 11 rmr
  • 12.
  • 13. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 13  Association clef/valeur  Dualité Map/Reduce  Map = une observation  Reduce = agrégation
  • 14. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 14 map=function(k,v){ … k’= … v’= … keyval(k’,v’) } reduce = function(k’,list_v’){ … k’’= … v’’= … keyval(k’’, v’’) }
  • 15. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 15  Association clef/valeur  Dualité Map/Reduce  Map = une observation  Reduce = agrégation  Nombre de tweets : Map tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1>
  • 16. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 16  Association clef/valeur  Dualité Map/Reduce  Map = une observation  Reduce = agrégation  Nombre de tweets : ReduceMap tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,1> <NULL,11>
  • 17. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 17 mapreduce(input=input, map=function(k,v){ k’ = NULL v’ = 1 keyval(k’, v’) }, reduce = function(k’,list_v’){ k’’ = NULL v’’= sum(unlist(list_v’)) keyval(k’’,v’’) } )
  • 18. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 18  Nombre de tweets par utilisateur : Map tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id1,1> <id2,1> <id3,1> <id1,1> <id1,1> <id1,1> <id2,1> <id3,1> <id2,1> <id1,1> <id2,1>
  • 19. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 19  Nombre de tweets par utilisateur : Map tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id1,1> <id2,1> <id3,1> <id1,1> <id1,1> <id1,1> <id2,1> <id3,1> <id2,1> <id1,1> <id2,1>  Map  Clef : identifiant utilisateur  Valeur : 1
  • 20. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 20  Nombre de tweets par utilisateur : Regroupement AutomatiqueMap tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id1,1> <id2,1> <id3,1> <id1,1> <id1,1> <id1,1> <id2,1> <id3,1> <id2,1> <id1,1> <id2,1> <id1,1> <id1,1> <id1,1> <id1,1> <id1,1> <id2,1> <id2,1> <id2,1> <id2,1> <id3,1> <id3,1>  Map  Clef : identifiant utilisateur  Valeur : 1
  • 21. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 21  Nombre de tweets par utilisateur : Regroupement AutomatiqueMap Reduce tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id1,1> <id2,1> <id3,1> <id1,1> <id1,1> <id1,1> <id2,1> <id3,1> <id2,1> <id1,1> <id2,1> <id2,4> <id1,1> <id1,1> <id1,1> <id1,1> <id1,1> <id2,1> <id2,1> <id2,1> <id2,1> <id3,1> <id3,1> <id3,2> <id1,5> <id1,5> <id2,4> <id3,2>  Map  Clef : identifiant utilisateur  Valeur : 1  Reduce  Agrégation par clef
  • 22. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 22 mapreduce(input = input , map=function(k,v){ k’ = v$user$id_str v’ = 1 keyval(k’, v’) }, reduce = function(k,list_v){ keyval(k, sum(unlist(list_v))) } )
  • 23. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 23  Nombre de tweets moyen par utilisateur : Reduce 1Regroupement Automatique Map tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id1,1> <id2,1> <id3,1> <id1,1> <id1,1> <id1,1> <id2,1> <id3,1> <id2,1> <id1,1> <id2,1> <NULL,5> <NULL,4> <NULL,2> <id1,1> <id1,1> <id1,1> <id1,1> <id1,1> <id2,1> <id2,1> <id2,1> <id2,1> <id3,1> <id3,1>
  • 24. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 24  Nombre de tweets moyen par utilisateur : Reduce 1Regroupement Automatique Map tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id1,1> <id2,1> <id3,1> <id1,1> <id1,1> <id1,1> <id2,1> <id3,1> <id2,1> <id1,1> <id2,1> <NULL,5> <NULL,4> <NULL,2> <id1,1> <id1,1> <id1,1> <id1,1> <id1,1> <id2,1> <id2,1> <id2,1> <id2,1> <id3,1> <id3,1>  Reduce 1 :  Agrégation par clef  Changement de clef
  • 25. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 25  Nombre de tweets moyen par utilisateur : Reduce 2Reduce 1Regroupement Automatique Map tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id1,1> <id2,1> <id3,1> <id1,1> <id1,1> <id1,1> <id2,1> <id3,1> <id2,1> <id1,1> <id2,1> <NULL,5> <NULL,4> <NULL,2> <NULL, 3.7> <id1,1> <id1,1> <id1,1> <id1,1> <id1,1> <id2,1> <id2,1> <id2,1> <id2,1> <id3,1> <id3,1>  Reduce 1 :  Agrégation par clef  Changement de clef  Reduce 2 :  Moyenne sur tous les individus
  • 26. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 26 input2=mapreduce( input = input , map= function(k,v) { keyval(v$user$id_str,1) }, reduce = function(k,list_v){ keyval(NULL, sum(unlist(list_v))) } ) mapreduce(input=input2, reduce=function(k,list_v){ keyval(k,mean(unlist(list_v))) } )
  • 27.
  • 28. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 28  Étude de l’influence sur Twitter  Début : 19 mars 2012  (publication de la liste des candidats)  Fin : 5 mai 2012  (la veille des résultats du second tour)  130 mots clefs  16 millions de tweets récoltés  4 500 000 utilisateurs  53 Go
  • 29. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 29 { "_id":{ "$oid": "4f625e47e2a3f33c79000002" }, "truncated":false, "retweet_count":0, "source":"web", "user":{ "screen_name":"Expat00007", "followers_count":0, "time_zone":"Amsterdam", "location":null, "lang":"fr", "profile_image_url_https":"https://si0.twimg.com/sticky/default_profile_images/default_profile_5_normal.png", "name":"Expat00007", "id":525747899, "geo_enabled":false, "created_at":"Thu Mar 15 21:02:35 +0000 2012", "friends_count":0, "id_str":"525747899", "profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_5_normal.png" }, "place":null, "geo":null, "text":"#FH réveille toi, Sarkozy lui, envoyait sévère, il a du punch, il répond du tac o tac, il sait de quoi il parle... il tergiverse pas !", "coordinates":null, "created_at":"Thu Mar 15 21:25:27 +0000 2012", "entities":{ "hashtags": [{ "text":"FH", "indices":[0,3] }], "urls":[], "user_mentions":[]}, "id":180404368162570240, "id_str":"180404368162570240" }
  • 30. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 30  F. Hollande :  1er personne  Candidat sortant  N. Sarkozy :  3eme personne  @fhollande
  • 31. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 31  F. Hollande :  1er personne  Candidat sortant  #rennes…  N. Sarkozy :  3eme personne  @fhollande  #dpda…
  • 32. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 32  F. Hollande :  228 776  N. Sarkozy :  174 967
  • 33. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 33 Nombre de Tweets Nombre de Retweets Nombre de tracts équivalent François Hollande 712 30 854 12 107 411 Nicolas Sarkozy 609 42 796 13 769 105
  • 34.
  • 35. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 35  Structure des retweets  Estimation de la matrice « qui a retweeté qui »  Matrice stochastique  Matrice creuse de dimension 4 500 000 * 4 500 000  Évolution d’une mesure de probabilité  Produit matriciel  Mesure récursive du pouvoir d’influence  Prise en compte de la capacité d’influence des proches  Convergence itérative  Solution unique
  • 36. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 36  François Hollande : 12eme  Nicolas Sarkozy : 14eme  Analystes politiques :  Le Véritomètre (rang 3)  Owni (rang 4)  Journalistes :  Soren Seelow (rang 24)  Leparmentier Arnaud (rang 26)  Politiques :  Vincent Feltesse (rang 17)  Jean-Luc Mélenchon (rang 20)  Etrangers :  Barack Obama (rang 6-7)  Breaking news (rang 13)  …
  • 37. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 37  Structure des retweets  Estimation de la matrice « qui a retweeté qui »  Matrice stochastique  Matrice creuse de dimension 4 500 000 * 4 500 000  Évolution d’une mesure de probabilité  Produit matriciel  Mesure récursive du pouvoir d’influence  Prise en compte de la capacité d’influence des proches  Convergence itérative  Solution unique
  • 38. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 38 Regroupement Automatique Map tweet1 tweet2 tweet3 tweet4 tweet5 tweet6 tweet7 tweet8 tweet9 tweet10 tweet11 <id_Retweeter1,id_Author4> <id_Retweeter2,id_Author4> <id_Retweeter1,id_Author6> <id_Retweeter1,id_Author6> <id_Retweeter3,id_Author4> <id_Retweeter3,id_Author5> <id_Retweeter1,id_Author4> <id_Retweeter1,id_Author6> <id_Retweeter1,id_Author6> <id_Retweeter2,id_Author4> <id_Retweeter3,id_Author4> <id_Retweeter3,id_Author5> … … …
  • 39. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 39 mapreduce(input=input, map=function(k,v){ if(is.null(v$retweeted_status$user$id_str)){return()} else{ retweeteur=v$user$id_str retweete=v$retweeted_status$user$id_str keyval(retweeteur,retweete) } }, …
  • 40. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 40 Reduce id_author4 | id_author6 <id_Retweeter1, 0.333 | 0.667 >… … … id_author4 | <id_Retweeter2, 1 | > id_author4 | id_author5 <id_Retweeter1, 0.5 | 0.5 > Matrice creuse
  • 41. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 41 mapreduce(input=input, map=function(k,v){ if(is.null(v$retweeted_status$user$id_str)){return()} retweeteur=v$user$id_str retweete=v$retweeted_status$user$id_str keyval(retweeteur,retweete) }, reduce=function(k,vv){ keyval(k,table(unlist(vv))/length(vv)) } )
  • 42. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 42 Matrice creuse clef : id_Retweeter valeur : data.frame : (id_user, coefficient) Vecteur de score d’influence clef : id_user valeur : score Reduce Reduce Equijoin() (Jointure sur les clefs) Clef : id_Retweeter Valeur 1 : (id_user, coefficient) Valeur 2 : (score) Clef : id_user Valeur : coefficient*score Nouveau vecteur de score Clef : id_user Valeur : nouveau_score = SUM(coefficient*score)
  • 43. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 43 tmp=equijoin( left.input=score, right.input=matrice, outer="left", #map.right=function(…) #map.left=function(…) reduce.all=function(k, v.left, v.right){ k’=unlist(v.right[,1]) v’=unlist(as.numeric(v.right[,2])*as.numeric(v.left)) keyval(k’,v’) } ) mapreduce( input=tmp, reduce=function(k,v){ keyval(k’,sum(unlist(v’)) } )
  • 44. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 44 Autres fonctions R disponibles dans le package rmr mapreduce(…) Cadre fonctionnel permettant de définir et de réaliser les traitements au format MapReduce. rmr.str(…) Équivalent de la fonction str() de R rmr.sample(input, output = NULL, method = c("any", "Bernoulli"), ...) Réalise des échantillonnages aléatoires dans les fichiers de l’hdfs. On peut y définir un effectif cible ou une probabilité d’échantillonnage. equijoin(…) Permet de réaliser des jointures en MapReduce (cf. exemple)
  • 45. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 45 1. Zouheir Guédri  Congrès BigData Paris. (2012) 2. Alex Popescu  Big data causes concern and big confusion. A big data definition to help clarify the confusion. (2012) 3. Stephane Fermigier  Big data & open source : une convergence inévitable ? (2012) 4. Semiocast  Twitter reaches half a billion accounts - More than 140 millions in the U.S. (2012) 5. R development core team  R : A language and environment for statistical computing. (2008) (3-900051- 07-0) 6. Michael Eisermann 1. Comment fonctionne Google ? (2009)