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
Đố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 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é
Happy coding