【发布时间】:2017-10-01 21:58:55
【问题描述】:
我只想找到与特定键关联的所有值的平均值,下面是我的程序:
from pyspark import SparkContext,SparkConf
conf = SparkConf().setAppName("averages").setMaster("local")
sc = SparkContext(conf=conf)
file_rdd = sc.textFile("C:\spark_programs\python programs\input")
vals_rdd = file_rdd.map(lambda x:(x.split(" ")[0],int(x.split(" ")[2])))
print type(vals_rdd)
pairs_rdd = vals_rdd.reduceByKey(lambda x,y:(x+y)/2)
for line in pairs_rdd.collect():
print line
以下是输入数据:
a hyd 2
b hyd 2
c blr 3
d chn 4
b hyd 5
当我运行程序时,我得到的输出如下:
(u'a', 2)
(u'c', 3)
(u'b', 3) -- I could see only got b's value getting averaged.
(u'd', 4)
除了 b 的值之外,所有值都不是平均的。为什么会发生?为什么 a,c,d 值不取平均值??
【问题讨论】:
标签: python apache-spark