如何有效拆分RDD[T]
into a Seq[RDD[T]]
/ Iterable[RDD[T]]
with n
元素并保留原始顺序?
我希望能够写出这样的东西
RDD(1, 2, 3, 4, 5, 6, 7, 8, 9).split(3)
这应该会导致类似的结果
Seq(RDD(1, 2, 3), RDD(4, 5, 6), RDD(7, 8, 9))
Spark有提供这样的功能吗?如果不是,什么是实现这一目标的高效方法?
val parts = rdd.length / n
val rdds = rdd.zipWithIndex().map{ case (t, i) => (i - (i % parts), t)}.groupByKey().values.map(iter => sc.parallelize(iter.toSeq)).collect
看起来不是很快。。