'采取'转换RDD

时间:2017-06-21 14:14:25

标签: apache-spark

take(count)是对RDD的操作,它返回一个包含第一个count项的数组。

是否存在返回带有第一个count项的RDD的转换? (如果数是近似值就可以了)

我能得到的最好的是

val countPerPartition = count / rdd.getNumPartitions.toDouble
rdd.mapPartitions(_.take(countPerPartition))

更新 我不希望将数据传输给驱动程序。在我的情况下,count可能非常大,并且驱动程序没有足够的内存来容纳它。我希望数据保持并列化以进行进一步的转换。

1 个答案:

答案 0 :(得分:1)

为什么不到rdd.map(..)。take(X)。即变换然后采取。不要害怕做多余的工作,直到你调用所有的计算都是在spark中评估的懒惰(所以只会发生~X变换)