一种方法是使用RDD的滑动功能。你可以在apache spark的mllib包中找到它。这里是你如何使用它。 假设我们有1000个元素
val rdd = sc.parallelize(1 to 1000)
import org.apache.spark.mllib.rdd._
val newRdd = RDDFunctions.fromRDD(rdd)
// sliding by 10 (instead use 5000 or what you need)
val rddSlidedBy10 = newRdd.sliding(10, 10)
的RDD结果会是这样
Array(Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Array(11, 12, 13, 14, 15, 16, 17, 18, 19, 20), Array(21, 22, 23, 24, 25, 26, 27, 28, 29, 30), Array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40), Array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50), Array(51, 52, 53, 54, 55, 56, 57, 58, 59, 60), Array(61, 62, 63, 64, 65, 66, 67, 68, 69, 70), Array(71, 72, 73, 74, 75, 76, 77, 78, 79, 80)
的你可以在阵列和处理原始数据的foreach到CSV
感谢。看来这个方法在spark 2.xx中不幸的是,对于这个用例,我需要使用spark 1.6.2。 – Bala
也有替代方法:https://stackoverflow.com/questions/43877678/spark-split-rdd-elements-into-chunks – dumitru