Spark-RDD的宽窄依赖以及Shuffle优化

目录

RDD宽窄依赖的区别

DAG有向无环图

窄依赖

宽依赖

shuffle过程

 Shuffle介绍

 Spark优化-避免shuffle


RDD宽窄依赖的区别

  • 窄依赖
    • 每个父RDD的一个Partition最多被子RDD的一个Partition所使用
      • map
      • flatMap
      • filter
  • 宽依赖
    • 一个父RDD的Partition会被多个子RDD的Partition所使用
      • groupbykey
      • reducebykey
      • sortBykey
    • 在宽依赖中rdd之间会发生数据交换,这个交换的过程称为rdd的shuffle
      • 只要是宽依赖必然发生shuffle
      • 在宽依赖进行数据交换时,只有等待所有分区数据交换完成后,才能进行后续的计算,非常影响计算速度

 ​​​​​​

DAG有向无环图

  • DAG 管理维护rdd之间依赖关系,保证代码的执行顺序, DAG会根据依赖关系划分stage,每个stage都是一个独立的计算步骤,当发生宽依赖时,会单独拆分一个计算步骤(stage),进行相关数据计算,可以保证每个单独的stage可以并行执行在发生宽依赖进行shuffle时,会独立的方法执行shuffle计算,拆分计算步骤的本质是为了保证数据计算的并行执行.
  • 查看spark的计算过程,通过DAG判断算子是宽依赖还是窄依赖
  • 拆分了计算stage是宽依赖,没有拆分是窄依赖
  • 启动spark的历史日志
  • start-history-server.sh

窄依赖

# 判断宽窄依赖
from pyspark import SparkContext
sc = SparkContext()


rdd = sc.paralle
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值