我想在RDD上实现一些顺序算法。
例如:
val conf = new SparkConf()
conf.setMaster("local[2]").
setAppName("SequentialSuite")
val sc = new SparkContext(conf)
val rdd = sc.
parallelize(Array(1, 3, 2, 7, 1, 4, 2, 5, 1, 8, 9), 2).
sortBy(x => x, true)
rdd.foreach(println)
我想在屏幕上看到有序号码,但它显示无序整数。这两个分区同时执行println
。
如何让RDD执行全局顺序功能?
答案 0 :(得分:1)
我根据Spark: Best practice for retrieving big data from RDD to local machine找到答案:
val rdd : RDD[Int] = sc.parallelize(Array(1, 3, 2, 7, 1, 4, 2, 5, 1, 8, 9)).sortBy(x => x, true)
for(p <- rdd.partitions) {
val partrdd = rdd.mapPartitionsWithIndex((i : Int, iter : Iterator[Int]) => if (i == p.index) iter else Iterator(), true)
partrdd.foreach(println)
}