在Spark模型中对两个向量进行元素操作的正确方法是什么?

时间:2016-02-01 17:17:57

标签: apache-spark pyspark yarn

我正在使用带有YARN的PySpark并且有两个RDD,A& B我希望对其进行各种各样的元素计算。两个RDD都是相同长度的向量,并且分成相同数量的分区。我目前的做法如下:

#C = A + B
C = A.zip(B).map(lambda x: x[0] + x[1])

当我在RDD上调用一个由这些类型的操作中的5-8链组成的结果时,我开始失去执行者。如果我继续向下收集链,那么将丢失足够的执行程序以导致计算失败。增加每个执行程序的内存量可以完成计算。这会提示以下问题:

  1. A.zip(B).map(操作(A,B))是否在两个RDD上运行?

  2. 我在使用这种方法时遇到了隐藏的陷阱吗?我读到执行器可能因为内存分配过多而丢失。这对我来说没有意义,因为我对RDD的解释只是作为制作中间数据集的一组指令,而不是实际的分布式数据集本身。

0 个答案:

没有答案