spark开发新手遇到如下问题,请大神赐教
问题描述
数据处理过程中计算得到两个RDD:rdd1和rdd2,
1.rdd1显示数据集
(R1,3)
(R2,5)
(R3,5)
(R4,5)
(R5,3)
2.rdd2显示数据集
((R1,R3),2)
((R2,R3),3)
((R2,R5),3)
((R1,R2),1)
((R1,R4),3)
((R3,R4),4)
((R4,R5),1)
((R3,R5),2)
((R2,R4),3)
要求计算 :((Rx,Ry),α)
其中α = 0.5*(|Rx| + |Ry|)
,|Rx|
和|Ry|
为rdd1中Rx
和Ry
的对应值
比如对rdd2中的第一条记录:((R1,R3),2)
===> ((R1,R3),(0.5*(3+5)))
= ((R1,R3),4)
可以将val rdd1map = rdd1.collectAsMap,然后在rdd2的map中,0.5*(rdd1map.get(k.apply(0)).getOrElse(0) + rdd1map.get(k.apply(1)).getOrElse(0))
大体是这个思路,我也在学习过程中,不能给予完善的解答,抱歉。