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

Apache spark 在Spark模型中,对两个向量执行元素操作的正确方法是什么?,apache-spark,pyspark,yarn,Apache Spark,Pyspark,Yarn,我将PySpark与纱线一起使用,有两个RDD,A和B,我希望对其执行一系列不同的元素计算。这两个RDD都是长度相同的向量,并且被划分为相同数量的分区。我目前的做法如下: #C = A + B C = A.zip(B).map(lambda x: x[0] + x[1]) 当我对一个RDD调用一个由5-8个这类操作组成的链式收集时,我开始丢失执行器。如果我继续收集链的下游,将丢失足够多的执行器,导致计算失败。增加每个执行器的内存量可以完成计算。这会引发以下问题: A.zip(B.map)(操作

我将PySpark与纱线一起使用,有两个RDD,A和B,我希望对其执行一系列不同的元素计算。这两个RDD都是长度相同的向量,并且被划分为相同数量的分区。我目前的做法如下:

#C = A + B
C = A.zip(B).map(lambda x: x[0] + x[1])
当我对一个RDD调用一个由5-8个这类操作组成的链式收集时,我开始丢失执行器。如果我继续收集链的下游,将丢失足够多的执行器,导致计算失败。增加每个执行器的内存量可以完成计算。这会引发以下问题:

  • A.zip(B.map)(操作(A,B))是在两个RDD上操作的预期方法吗

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