Java 无需洗牌即可加入2对RRDD
我有两对RDD:rddA是巨大的,rddB小得多。我需要通过键将它们连接起来,这样我就可以进一步迭代对应于同一个键的那些pairrds的元素对。pairdd#join方法似乎正是我所需要的,但我发现它涉及到洗牌,从而导致将大量数据写入HDF并经常出现内存不足错误。有什么办法可以避免混乱吗 要减少混洗,数据必须在同一群集节点上进行共定位Java 无需洗牌即可加入2对RRDD,java,scala,hadoop,apache-spark,Java,Scala,Hadoop,Apache Spark,我有两对RDD:rddA是巨大的,rddB小得多。我需要通过键将它们连接起来,这样我就可以进一步迭代对应于同一个键的那些pairrds的元素对。pairdd#join方法似乎正是我所需要的,但我发现它涉及到洗牌,从而导致将大量数据写入HDF并经常出现内存不足错误。有什么办法可以避免混乱吗 要减少混洗,数据必须在同一群集节点上进行共定位 在数据源级别控制分区和/或使用.partition操作符 如果小的RDD可以放在所有工作者的内存中,那么使用广播变量是更快的选择 一些帮助我的建议: 特别是
- 在数据源级别控制分区和/或使用.partition操作符
- 如果小的RDD可以放在所有工作者的内存中,那么使用广播变量是更快的选择
- 特别是在幻灯片12周围
- 关于加入广播地图:特别是幻灯片9-12