Average By key in Python/Spark



我正在尝试根据密钥进行平均,我得到的数据如下:

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具有1020作为值,10+20/2 =15x:15y变为30+40/2=35y: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}

最新更新