【赵渝强老师】Spark RDD的依赖关系和任务阶段

Spark RDD彼此之间会存在一定的依赖关系。依赖关系有两种不同的类型:窄依赖和宽依赖。

  • 窄依赖:如果父RDD的每一个分区最多只被一个子RDD的分区使用,这样的依赖关系就是窄依赖;
  • 宽依赖:如果父RDD的每一个分区被多个子RDD的分区使用,这样的依赖关系就是宽依赖。

map、filter、union等操作都是典型的窄依赖操作,如下图所示。通过观察发现,每一个父RDD的分区都只被一个子RDD的分区使用。

注意:join操作可能会比较特殊,某些情况的join是窄依赖操作;但有些情况的join是宽依赖操作。需要具体问题具体分析。

视频讲解如下
【赵渝强老师】Spark RDD的窄依赖关系

宽依赖最典型的操作就是分组,如下图所示。这里父RDD的每一个分区都被多个子RDD的分区使用。

注意:这里的join操作就是一个宽依赖操作。

视频讲解如下
【赵渝强老师】Spark RDD的宽依赖关系

有了RDD之间不同的依赖关系,就可以划分任务执行的阶段,从而构建任务执行的DAG(Directed Acyclic Graph,有向无环图)图。对于窄依赖,分区的转换处理在同一个阶段中完成计算;对于宽依赖,由于有Shuffle的存在,只能在父 RDD处理完成后,子RDD才能开始计算,因此宽依赖是划分任务阶段的标准。下图中的任务一共被划分成了三个不同阶段来执行。

视频讲解如下
【赵渝强老师】如何划分Spark任务的执行阶段

通过借助Spark Web Console可以很方便的查看到任务被划分的阶段以及DAG图。下图是在Web Console查看WordCount任务的DAG图。

相关推荐
Y38153266226 分钟前
3 种 SERP 数据处理方案对比:流式 / 批处理 / 缓存
java·spring·缓存
Database_Cool_30 分钟前
LLM 应用怎么省 Token、加速响应——阿里云 Tair 语义缓存实战
阿里云·缓存·云计算
huihui36135 分钟前
北京比较好的商会私域管理软件推荐:选型标准与核验要点
大数据
三言老师42 分钟前
CentOS7.9:Redis 数据持久化结构化实战教程
数据库·redis·缓存
数智顾问43 分钟前
(84页PPT)PWC海科集团生物医药业务5年发展战略项目建议书(附下载方式)
大数据·人工智能·物联网
Elastic 中国社区官方博客1 小时前
使用重新设计的 AutoOps 更快地进行 Elasticsearch 问题排查
大数据·运维·前端·人工智能·elasticsearch·搜索引擎·全文检索
2401_859506241 小时前
玉石鉴定的技术原理与实操方法:从证书验真到品质判断
大数据
涛思数据(TDengine)1 小时前
WAIC 现场直击|烽台科技与 TDengine 战略签约:工业数据+“AI“,答案是什么?
大数据·人工智能·ai·时序数据库·tdengine·国产数据库
RoboWizard1 小时前
金士顿高速闪存盘 单双接口适配多元存储需求
大数据·运维·人工智能·智能手机·云计算
聚焦前沿1 小时前
水动力优化导流罩:原理、数据与实船验证
大数据·服务器·数据库·人工智能