我有2对:rdda是巨大的规模和rddb是小得多。我需要通过键连接它们,这样我就可以进一步迭代那些pairdds中对应于同一个键的元素对。pairdd#join方法似乎正是我所需要的,但我发现它涉及洗牌,从而导致将大量数据写入hdfs,并经常出现内存不足错误。有没有办法避免洗牌?
dtcbnfnu1#
为了减少混洗,数据必须在相同的集群节点上进行集中。在数据源级别控制分区和/或使用.partition操作符如果小的rdd可以放入所有worker的内存中,那么使用broadcast变量是更快的选择一些帮助我的建议:高级spark培训,特别是幻灯片12关于加入广播Map:特定幻灯片中的高级spark功能9-12
1条答案
按热度按时间dtcbnfnu1#
为了减少混洗,数据必须在相同的集群节点上进行集中。
在数据源级别控制分区和/或使用.partition操作符
如果小的rdd可以放入所有worker的内存中,那么使用broadcast变量是更快的选择
一些帮助我的建议:
高级spark培训,特别是幻灯片12
关于加入广播Map:特定幻灯片中的高级spark功能9-12