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

首页 » Spark » RDD宽窄依赖 stage 任务资源调度

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

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

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

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


术语

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

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

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


Stage

  • stage切割规则

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

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

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

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

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

Spark处理数据模式

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

落地管道中的数据:

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()
  }
}

RDD宽窄依赖 stage 任务资源调度
分享到:
赞(0) 打赏

评论 8

评论前必须登录!

 

  1. #1

    挺明白的

    靓妹6个月前 (03-27)
  2. #2

    奥利给

    努力6个月前 (03-27)
  3. #3

    奥利给

    渣渣混6个月前 (03-27)
  4. #4

    我给你点赞了

    靓妹6个月前 (03-27)
  5. #5

    我也是小白以后多多交流

    渣渣辉6个月前 (03-28)
  6. #6

    good厉害了

    你哥4个月前 (05-26)
  7. #7

    我是你哥4个月前 (05-26)
  8. #8

    记住这个网站了

    中国加油小子4个月前 (05-26)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00