11/08/2018, 21:09

Average Value Với Spark

Như đã nói ở bài trước, mình đang nghiên cứu về Spark nên cần log lại một số thứ để dành sau này dùng đến Đối tượng hướng đến vẫn là những người đã và đang nghiên cứu Spark, Map-Reduce BigData Mình có một dữ liệu như sau name,age,money(k$) A,20,2 B,22,3 C,20,1 D,19,5 E,19,9 Và mình ...

Như đã nói ở bài trước, mình đang nghiên cứu về Spark nên cần log lại một số thứ để dành sau này dùng đến :smile:
Đối tượng hướng đến vẫn là những người đã và đang nghiên cứu Spark, Map-Reduce BigData

Mình có một dữ liệu như sau

name,age,money(k$)
A,20,2
B,22,3
C,20,1
D,19,5
E,19,9

Và mình muốn đầu ra như sau:

age,avg(money)
19,7
20,1.5
22,3

Đầu tiên vẫn là map nó lại :smile: dưới dạng tuple (age, money), sau đó tính số người cùng độ tuổi và số tiền họ có được và trả về 1 list bao gồm các tuple dạng (age, sum(money), total)

Đầu tiên map lại

group = rdd.map(lambda x: (x[1],(x[2],1)))

Sau đó Reduce theo ý muốn

group = group.reduceByKey(lambda x,y: (x[0]+y[0], x[1] + y[1]))

Map thêm lần nữa (để tính avg)

group = group.map(lambda (x,y): (x,round(float(y[0]) / y[1],2))).sortByKey()

Vào terminal gõ:

spark-submit avg.py
(19, 7.0)
(20, 1.5)
(22, 3.0)

Ai ngoại đạo đừng rủa mình hay kêu mình đang "lảm nhảm" nhé :smile:
Happy coding :smile:

0