当前位置: 首页 > news >正文

【赵渝强老师】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图。
在这里插入图片描述

http://www.lryc.cn/news/531618.html

相关文章:

  • 【B站保姆级视频教程:Jetson配置YOLOv11环境(六)PyTorchTorchvision安装】
  • Verilog语言学习总结
  • 【阅读笔记】LED显示屏非均匀度校正
  • 【Java异步编程】CompletableFuture基础(1):创建不同线程的子任务、子任务链式调用与异常处理
  • ESXI虚拟机中部署docker会降低服务器性能
  • ASP.NET Core与配置系统的集成
  • 中间件的概念及基本使用
  • SpringBoot 整合 Mybatis:注解版
  • 18.[前端开发]Day18-王者荣耀项目实战(一)
  • Kafka 使用说明(kafka官方文档中文)
  • 基于多智能体强化学习的医疗AI中RAG系统程序架构优化研究
  • Airflow:深入理解Apache Airflow Task
  • multisim入门学习设计电路
  • 【算法精练】二分查找算法总结
  • 从零开始实现一个双向循环链表:C语言实战
  • MYSQL面试题总结(题目来源JavaGuide)
  • visual studio安装
  • JVM执行引擎
  • C# 9.0记录类型:解锁开发效率的魔法密码
  • 搭建自己的专属AI——使用Ollama+AnythingLLM+Python实现DeepSeek本地部署
  • 『 C++ 』中理解回调类型在 C++ 中的使用方式。
  • git多人协作
  • CTFSHOW-WEB入门-命令执行71-77
  • 浅谈《图解HTTP》
  • LLMs瞬间获得视觉与听觉感知,无需专门训练:Meta的创新——在图像、音频和视频任务上实现最优性能。
  • 自研有限元软件与ANSYS精度对比-Bar3D2Node三维杆单元模型-央视大裤衩实例
  • kubernetes 高可用集群搭建
  • 【C++】STL——vector底层实现
  • 数据结构初探:链表之单链表篇
  • 介绍一下Mybatis的底层原理(包括一二级缓存)