Re: [问题] spark 资料减去平均值

楼主: thefattiger (LT)   2018-10-01 20:26:15
※ 引述《comeonbaby (来巴宝贝)》之铭言:
: 目前资料已分成一串tuple存在RDD里面 (ID, Data)
: 目前想做的是将Data值减去其ID的Data平均值
: 例如: (1,10) (1,20) (2,10) 跑完后会变成
: (1,-5) (1,5) (2,0) 这样
: 因为刚接触不太清楚该怎么实作
没用过Spark,但看起起来跟它无关
from collections import defaultdict
x = [(1,10),(1,20),(2,10)] #your data
avg = defaultdict(lambda:[0,0])
for ID,data in x:
avg[ID][0] = (avg[ID][0]*avg[ID][1] + data)/(avg[ID][1]+1)
avg[ID][1] += 1
y = list(map(lambda s:(s[0],s[1]-avg[s[0]][0]),x)) #result

Links booklink

Contact Us: admin [ a t ] ucptt.com