spark3.0教程:多个RDD多个分区执行顺序

说明

如下图:一个集合中的元素是:1,2,3,4,有2个RDD

一个分区

当只有一个分区时,是顺序执行的,即:第一个数据,送入第一个 RDD 执行,然后送入第二个RDD执行,全部RDD执行后,再计算下一个数据

多个分区

当有多个分区时,多个分区可同时计算,是无序的,但每一个分区 是 顺序执行 的,同上

验证

一个分区

val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)
//只有一个分区
val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4),1)
//    val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4),2)
val resRDD1 = rdd.map(e=>{
  println("RDD1::::"+e)
  e
})
val resRDD2 = resRDD1.map(e=>{
  println("RDD2::::"+e)
  e
})
resRDD2.collect()
sc.stop()

执行结果:

RDD1::::1
RDD2::::1
RDD1::::2
RDD2::::2
RDD1::::3
RDD2::::3
RDD1::::4
RDD2::::4

两个分区

val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)
//只有一个分区
//    val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4),1)
val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4),2)
val resRDD1 = rdd.map(e=>{
  println("RDD1::::"+e)
  e
})
val resRDD2 = resRDD1.map(e=>{
  println("RDD2::::"+e)
  e
})
resRDD2.collect()
sc.stop()

执行结果:

RDD1::::1
RDD2::::1
RDD1::::3
RDD1::::2
RDD2::::3
RDD2::::2
RDD1::::4
RDD2::::4

原文出处:/show_1IX1Jb2aRmZa.html