take(count)
是对RDD的操作,它返回一个包含第一个count
项的数组。
是否存在返回带有第一个count
项的RDD的转换? (如果数是近似值就可以了)
我能得到的最好的是
val countPerPartition = count / rdd.getNumPartitions.toDouble
rdd.mapPartitions(_.take(countPerPartition))
更新
我不希望将数据传输给驱动程序。在我的情况下,count
可能非常大,并且驱动程序没有足够的内存来容纳它。我希望数据保持并列化以进行进一步的转换。
答案 0 :(得分:1)
为什么不到rdd.map(..)。take(X)。即变换然后采取。不要害怕做多余的工作,直到你调用所有的计算都是在spark中评估的懒惰(所以只会发生~X变换)