简述Spark的宽窄依赖以及Stage是怎么划分的以及每个stage又是怎么划分task任务数

首先是Spark宽窄依赖的定义:

简单来理解的话,窄依赖就是父RDD的每个分区最多被一个子RDD所依赖,是一对一依赖,这种情况的操作例如union,flatMap这样的操作,不会产生shuffle。

宽依赖有别名叫做shuffle依赖,就是父RDD的每个分区会被多个子RDD所依赖,例如ReduceByKey,join这样的操作,会产生shuffle

所以划分Stage的边界就是宽依赖,而窄依赖会被流水线话的合并到同一个Stage中进行处理

在Stage中,决定Task数量有两方面的task数据:

一方面是shuffle中的shuffleMapStage的task数据会根据上游EDD的分区数进行划分,有多少个分区就有多少个Task数据。

另外的resultSta的task数据则会根据下游最终那个RDD的需要所分区数据进行分区,这里我们可以进行通过参数控制task的数据,那么就会有200个task任务数,默认是200个分区数据,可以根据实际情况进行优化调参数。

相关推荐
怪力左手16 分钟前
kafka部署
分布式·kafka
欧亚学术42 分钟前
计算机网络领域所有CCF-A/B/C类期刊汇总!
大数据·计算机网络·计算机·论文·sci·期刊·发表
江瀚视野1 小时前
虎扑正式易主,迅雷完成收购会带来什么变化?
大数据·区块链
QYR_112 小时前
宠物车载安全座椅市场报告:解读行业趋势与投资前景
大数据·人工智能
Leo.yuan2 小时前
实时数据仓库是什么?数据仓库设计怎么做?
大数据·数据库·数据仓库·数据分析·spark
predisw2 小时前
Kafka broker 写消息的过程
分布式·kafka
@BreCaspian2 小时前
Git 推送失败解决教程——error: failed to push some refs to
大数据·git·elasticsearch
找不到、了4 小时前
深入学习RabbitMQ队列的知识
分布式·rabbitmq
showmethetime4 小时前
RabbitMQ实用技巧
分布式·rabbitmq·ruby
郭泽元5 小时前
递归树形菜单:优雅处理层级数据的利器
大数据