spark如何处理两个RDD的关联问题
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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可以将val rdd1map = rdd1.collectAsMap,然后在rdd2的map中,0.5*(rdd1map.get(k.apply(0)).getOrElse(0) + rdd1map.get(k.apply(1)).getOrElse(0))
大体是这个思路,我也在学习过程中,不能给予完善的解答,抱歉。
实现rdd关联的话,需要先对rdd进行keyby,然后进行join操作
你看下 能否达到你对要求
val spark = SparkSession