spark源码分析之窄依赖和宽依赖篇

这里写图片描述

  • 窄依赖:子RDD的partition和父RDD的partition是一一对应的。(join操作除外,此操作是多对一)
    注意点:

    • 若parent RDD有已知的partitioner(若已知的partitioner相同,两个RDD会协同,那么就能避免网络传输,两个parent RDD 的相同partition会在同一个节点上),只能产生窄依赖,如上图的“join with inputs co-partitioned”
    • 窄依赖一般来说都是transform算子,但是join算子除外,它的父子关系为多对一
  • 宽依赖:父partition对子partition是一对多。父RDD中partition中数据都会传输一部分到子RDD的patition中
    注意点:
    • 假设有两个parent RDD,它们都没有已知的partitioner(可以理解为该RDD到其child RDD 重分区函数),那么它们就需要shuffle,使得它们共享同一个partitioner,并且有着相同key的数据会在同一个partition里面。如上图“join with inputs not co-partitioned”
    • 宽依赖一般来说都是action算子
  • Shuffle过程:会产生stage,内部的数据结构为栈,也就是先进后出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值