不洗牌地加入2对DDs

smdnsysy  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(336)

我有2对:rdda是巨大的规模和rddb是小得多。我需要通过键连接它们,这样我就可以进一步迭代那些pairdds中对应于同一个键的元素对。pairdd#join方法似乎正是我所需要的,但我发现它涉及洗牌,从而导致将大量数据写入hdfs,并经常出现内存不足错误。有没有办法避免洗牌?

dtcbnfnu

dtcbnfnu1#

为了减少混洗,数据必须在相同的集群节点上进行集中。
在数据源级别控制分区和/或使用.partition操作符
如果小的rdd可以放入所有worker的内存中,那么使用broadcast变量是更快的选择
一些帮助我的建议:
高级spark培训,特别是幻灯片12
关于加入广播Map:特定幻灯片中的高级spark功能9-12

相关问题