RDD宽窄依赖 stage 任务资源调度

2020-03-16 295次浏览 已收录 8个评论

窄依赖:
父RDD与子RDD partion之间的关系是一对一、多对一。

宽依赖(有shuffle):
父RDD与子RDD partion之间的关系是一对多。

tips:相同的key肯定去同一个分区,但一个分区中可以有不同的key


术语

Appliction由job组成,有几个action算子就有几个job


Stage

  • stage切割规则

切割规则:从后往前,遇到宽依赖就切割stage

Stage并行度由Stage中finalRDD的partition个数决定

上图由F决定,但是F后面的会起影响的作用

提高Stage的并行度:利用有shuffle的算子,比如reduceByKey(xxx,分区数[影响作用])、join(xxx,分区数)

Spark处理数据模式

落地管道中的数据:

1、shuffle write 溢写磁盘

2、对RDD进行持久化


代码测试

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object spark执行 {
  /*
   * 按照mr的执行逻辑
   * .....map~zha
   * .....map~long
   * .....map~xue
   * =====filter~zha
   * =====filter~long
   * =====filter~xue
   * 而按照spark的执行逻辑
   * ......mapzha
    ===========filterzha~
   ......maplong
   ===========filterlong~
   ......mapxue
   ===========filterxue~
   */
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("test")
    val sc=new SparkContext(conf)
    val rdd1=sc.parallelize(Array("zha","long","xue"))
    val rdd2 = rdd1.map(name=>{
      println("......map"+name)
      name+"~"
    })
    val rdd3=rdd2.filter(name=>{
      println("===========filter"+name)
      true
    }).collect()
    sc.stop()
  }
}


渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:RDD宽窄依赖 stage 任务资源调度
喜欢 (0)

您必须 登录 才能发表评论!

(8)个小伙伴在吐槽
  1. 挺明白的
    靓妹2020-03-27 12:45
  2. 奥利给
    努力2020-03-27 13:10
  3. 奥利给
    渣渣混2020-03-27 13:35
  4. 我给你点赞了
    靓妹2020-03-27 14:01
  5. 我也是小白以后多多交流
    渣渣辉2020-03-28 16:24
  6. good厉害了
    你哥2020-05-26 09:30
  7. 我是你哥2020-05-26 09:55
  8. 记住这个网站了
    中国加油小子2020-05-26 10:47