使用aggregateByKey PySpark进行平方和

时间:2017-02-16 16:13:22

标签: pyspark aggregate standard-deviation

我有数据集a,

Respect\Validation\Validator\NestedValidationException

我需要以下内容:

  • (1,2)将成为关键
  • 由于我想计算前两个值的流标准偏差,我需要评估一下 每个值的纯和和平方和。换句话说,我需要 sumx =(10 + 30),sumx ^ 2 =(10 ^ 2 + 30 ^ 2)为第一个值, 和 sumx =(20 + 40),sumx ^ 2 =(20 ^ 2 + 40 ^ 2)为第二个值。
  • 表示最终值(列表),我只想将它们连接起来。

最终结果必须是:

a = sc.parallelize([((1,2),(10,20,[1,3])),((1,2),(30,40,[1]))])

这是我的代码:

([(1,2),(40,1000,60,2000,[1,3])])

不幸的是它返回以下错误: a.aggregateByKey((0.0,0.0,0.0,0.0,[]),\ (lambda x,y: (x[0]+y[0],x[0]*x[0]+y[0]*y[0],x[1]+y[1],x[1]*x[1]+y[1]*y[1],x[2]+y[2])),\ (lambda rdd1,rdd2: (rdd1[0]+rdd2[0],rdd1[1]+rdd2[1],rdd1[2]+rdd1[2],rdd1[3]+rdd2[3],rdd1[4]+rdd2[4]))).collect()

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用hivecontext来解决此问题:

space