刚开始使用Spark
我喜欢以下内容:
(X,(A,1))
我想将每个 a 总结为以下
sumRDD = filteredRdd.map(lambda (x, (a, b)): (a, b)).reduceByKey(add)
它的作品 然后,我想像以前一样添加 x ,就像这样
(x,(a,sum_of_a))
我试过了:
sumRDD = filteredRdd.map(lambda (x, (a, b)): (a, b)).reduceByKey(add).map(lambda (a, b): (x,(a, b)))
它失败了:(
修改:我希望在计算过程中保持x为b的总和,这是我的重要关键
答案 0 :(得分:1)
在您计算sumRDD
后,您有两个RDD -
形式为sumRDD
的{{1}}和(a, sum_of_a)
形式的filteredRdd
。
你真的想创建一个关键是(x, (a,b))
的联接,然后重新映射。
我会做类似的事情 -
a
在此阶段之后,您将获得排序的输出 -
newRdd = filteredRdd.map(lambda x: (x[1][0], x[0])).join(sumRDD)
现在您需要将其转换为您喜欢的格式 -
a, (x, sum_of_a)