我正在尝试根据密钥进行平均,我得到的数据如下:
data = [
{"x":10,"y":30},{"x":20,"y":40}
]
到目前为止尝试
df=sc.parallelize(data)
df.groupByKey().mapValues(lambda x:sum(x)/len(x)).collect()
我得到一个错误:
org.apache.spark.SparkException:由于阶段失败,作业中止:17.0阶段的任务5失败1次,最近一次失败:丢失任务5.0在阶段17.0(TID 141,localhost,executor驱动程序(:org.apache.spark.api.python.PythonException:Traceback(最新最后一次通话(:
预期输出:
{"x":15,"y":35}
当我们按密钥进行平均时,x
具有10
和20
作为值,10+20/2 =15
即x:15
和y
变为30+40/2=35
即y:35
试试这个。
data = [
{"x":10,"y":30},{"x":20,"y":40}
]
rdd = spark.sparkContext.parallelize(data)
val = rdd.flatMap(lambda line: (line.items())).groupByKey().mapValues(lambda x : sum(x)/len(x)).collect()
dict(val)
{'x': 15.0, 'y': 35.0}