Écrire un programme python FriendByAge.py pour trouver le
nombre moyen d’amis dans un réseau social selon l’âge.
on a les variables userID name age nbFriend
Données : socialfriends.csv dans le dossier
https://drive.google.com/open?id=1fSt2aFZryUiKBxI3aJXQnpezJ3xntESP
le code python se fait comme suit
from mrjob.job import MRJob
import numpy
class MRFriendByAge(MRJob):
def mapper(self,key,line):
(userID,name,age,number) = line.split(',')
k = int(number)
yield age,k
def reducer(self,age,number1):
sum = 0
count = 0
for n in number1:
sum = sum + n
count = count + 1
average1 = sum / count
yield age, average1
if __name__ == '__main__':
MRFriendByAge.run()
comme vous le voyer pour gérer notre programme nous avons du créer une méthode mapper et une auttre reducer. la méthode mapper nus a permis de splitter les donner et de les distribues donc dans cette méthode on rentre les données ligne par ligne et il sort chaque variable age avec un tableau représentant les valeurs nbfriend associées et ce sont ces éléments que nous allons passer en paramètre a reducer qui va nous sortir le résultat
!python FriendByAge.py /home/cloudera/Downloads/socialfriends.csv
No configs found; falling back on auto-configuration
Creating temp directory /tmp/FriendByAge.cloudera.20180213.155551.376460
Running step 1 of 1...
Streaming final output from /tmp/FriendByAge.cloudera.20180213.155551.376460/output...
"18" 343
"19" 213
"20" 165
"21" 350
"22" 206
"23" 246
"24" 233
"25" 197
"26" 242
"27" 228
"28" 209
"29" 215
"30" 235
"31" 267
"32" 207
"33" 325
"34" 245
"35" 211
"36" 246
"37" 249
"38" 193
"39" 169
"40" 250
"41" 268
"42" 303
"43" 230
"44" 282
"45" 309
"46" 223
"47" 233
"48" 281
"49" 184
"50" 254
"51" 302
"52" 340
"53" 222
"54" 278
"55" 295
"56" 306
"57" 258
"58" 116
"59" 220
"60" 202
"61" 256
"62" 220
"63" 384
"64" 281
"65" 298
"66" 276
"67" 214
"68" 269
"69" 235
Removing temp directory /tmp/FriendByAge.cloudera.20180213.155551.376460...
Comments
Post a Comment