宽窄依赖/宽窄巷子——spark

宽窄依赖是用于标记算子是否需要shuffle过程的

------本质:只是一种标记,标记两个RDD之间的依赖关系,用于判断是否需要进行shuffle

窄依赖:Narrow Dependencies

复制代码

定义:父RDD的一个分区的数据只给了子RDD的一个分区 【不用经过Shuffle】 特点:一对一或者多对一 不经过Shuffle,性能相对较快, 但无法实现全局分区、排序、分组等 一个Stage内部的计算都是窄依赖的过程,全部在内存中 完成。

宽依赖:Wide/Shuffle Dependencies

复制代码

定义:父RDD的一个分区的数据给了子RDD的多个分区 【需要调用Shuffle的分区器来实现】 特点:一对多,必须经过Shuffle ,性能相对较慢,可以实现全局分区、排序、分组等 Spark的job中按照宽依赖来划分不同的Stage

为什么要标记宽窄关系?

1)提高数据容错的性能,避免分区数据丢失时,需要重新构建整个RDD

复制代码
场景:如果子RDD的某个分区的数据丢失
不标记:不清楚父RDD分区与子RDD分区数据之间的关系,必须重新构建整个父RDD所有分区数据
标记了:父RDD一个分区只对应子RDD的一个分区,按照对应关系恢复父RDD的对应分区即可

2)提高数据转换的性能,将连续窄依赖操作使用同一个Task都放在内存中直接转换

复制代码
如果不标记,怎么知道哪些算子需要shuffer呢?
------------就只能把数据放在磁盘,让shuffer算子,去拉取数据,效率低
相关推荐
重整旗鼓~13 分钟前
27.Redisson基本使用和可重入性
数据库·redis·缓存
失散1315 分钟前
分布式专题——46 ElasticSearch高级查询语法Query DSL实战
java·分布式·elasticsearch·架构
瑶总迷弟17 分钟前
使用 Docker 和 docker-compose 快速部署 openGauss
linux·数据库·云原生·eureka
没有bug.的程序员33 分钟前
分布式链路追踪:微服务可观测性的核心支柱
java·分布式·微服务·架构·wpf
C.R.xing33 分钟前
Pyspark分布式访问NebulaGraph图数据库
数据库·分布式·python·pyspark·nebulagraph
九皇叔叔37 分钟前
深度解析 PostgreSQL 中的 ctid、xmin、xmax:从原理到实战
数据库·postgresql
殷丿grd_志鹏1 小时前
开源项目RuoYi-Cloud-Plus详解——公网内网穿透到虚拟机环境(持续更新)
数据库·开源·内网穿透·虚拟机
萤丰信息1 小时前
智慧园区:引领城市未来发展新趋势
大数据·科技·安全·重构·智慧城市·智慧园区
木易 士心1 小时前
AI 在数据库操作中的各类应用场景、方案与实践指南
数据库·人工智能·oracle
SunsPlanter1 小时前
苍穹外卖--04--Redis 缓存菜品信息、购物车
数据库·redis·缓存