首页 > 解决方案 > 如何使用 mapPartition 等在执行程序内部进行涉及 rdd 的操作?

问题描述

我想做这样的事情:

val myBigRdd2: RDD[_] = ???
myBigRdd1.mapPartition{ dataBlock => 
    // operation involving dataBlock and an other RDD
    // like myBigRdd2.multiply(dataBlock) 
    // if myBigRdd2 is a matrix. Or something similar.
}

有没有办法给执行者一个RDD?

我认为Broadcastonrdd2行不通,因为它太大了。

因为驱动程序内存会爆炸,所以这样做collect也不会起作用。groupedrdd1

还有其他方法吗?

cartesian工作,但需要永远。

标签: scalaapache-spark

解决方案


您不能将 RDD 传递给 mapPartition,因为这是一个只有驱动程序知道的结构。执行者不能使用 RDD 结构。


推荐阅读