Как я могу эффективно разделить RDD[T]
на Seq[RDD[T]]
/Iterable[RDD[T]]
с элементами 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))
Искра обеспечивает такую функцию? Если нет, то какой эффективный способ добиться этого?
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
Вроде не быстро..
rdd.mapPartitions(_.grouped(3))
делает то, что вы хотите, но я бы предложил сделать шаг назад и спросить о вашей проблеме на более высоком уровне - чего вы на самом деле пытаетесь достичь здесь? - person lmm   schedule 13.11.2014RDD
вDStream
? - person Robin des Bois   schedule 13.11.2014