Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无需洗牌即可加入2对RRDD_Java_Scala_Hadoop_Apache Spark - Fatal编程技术网

Java 无需洗牌即可加入2对RRDD

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

我有两对RDD:rddA是巨大的,rddB小得多。我需要通过键将它们连接起来,这样我就可以进一步迭代对应于同一个键的那些pairrds的元素对。pairdd#join方法似乎正是我所需要的,但我发现它涉及到洗牌,从而导致将大量数据写入HDF并经常出现内存不足错误。有什么办法可以避免混乱吗

要减少混洗,数据必须在同一群集节点上进行共定位

  • 在数据源级别控制分区和/或使用.partition操作符
  • 如果小的RDD可以放在所有工作者的内存中,那么使用广播变量是更快的选择
一些帮助我的建议:

  • 特别是在幻灯片12周围
  • 关于加入广播地图:特别是幻灯片9-12

感谢您的支持!我将检查这是否有帮助。顺便问一下,具有相同键的RDD元素在默认情况下不是位于同一集群节点上吗?对于1RDD,这是正确的,但是对于2RDD,它不是,这是洗牌的原因。