Spark Exchange节点和Partitioning

​Exchange

在explain时,常看到Exchange节点,这个节点其实就是发生了数据交换


此图片来自于网络截取

BroadcastExchangeExec 主要是用来广播的

ShuffleExchangeExec 里面决定了数据分布的方式和采用哪种shuffle

在这里可以看到好几种不同的分区器

shufleManager创建不同的shuffle方式

Distribution与Partitioning

Distribution与Partitioning关联,定义了数据在集群各个节点上的分布情况

Distribution:

有6个子类

Partitioning和对应的子类

|----------------------------------------|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------|
| Distribution子类 | 描述 | 算子示例 | 调用createPartitioning()方法 |
| UnspecifiedDistribution | 未指定分布,无需确定数据元组之间的位置关系 | | 抛出异常 |
| AllTuples | 只有一个分区,所有的数据元组存放在一起 | 例如GlobalLimit算子 | SinglePartition |
| BroadcastDistribution | 广播分布,数据会广播到所有节点上,构造参数mode为广播模式(BroadcastMode) | 例如Broadcast的Join操作中的requiredChildDistribution为BroadcastDistribution(mode) | BroadcastPartitioning |
| ClusteredDistribution | 构造参数clustering是SeqExpression类型,起到哈希函数的效果,经过clustering之后,相同的value数据会放到一个分区中 | 例如SortAggregateExec类型的Join操作中的requiredChildDistribution就是ClusteredDistribution(exprs) | HashPartitioning |
| HashClusteredDistribution 3.3 移出 | 构造参数expressions是SeqExpression类型,起到哈希函数的效果,经过expressions之后,相同的value数据会放到一个分区中 | 例如SortMerge类型的Join操作中的requiredChildDistribution就是HashClusteredDistribution(leftKeys), HashClusteredDistribution(reghtKeys) | HashPartitioning |
| OrderedDistribution | 构造参数ordering是SeqSortOrder类型,数据会根据ordering计算后的结果排序 | 例如在全局的Sort算子中,requiredChildDistribution就是OrderedDistribution(sortOrder) | RangePartitioning |
| StatefulOpClusteredDistribution 3.3 新增 | | | |

相关推荐
ZeekerLin24 分钟前
AI时代,企业核心业务中台化建设思考
大数据·人工智能·企业ai转型
2601_949936961 小时前
2026会计岗位职场能力提升方法分享
大数据
咖啡屋和酒吧1 小时前
无锡干细胞领域发展纪实
大数据·人工智能
SelectDB2 小时前
阶跃星辰 Agent 可观测实践:为什么 Trace 数据底座选择 SelectDB?
大数据·数据库·agent
志起计算机编程2 小时前
Ubuntu24 单节点ClickHouse二进制包部署
大数据
TDengine (老段)2 小时前
# TDengine TMQ 最佳实践 — 可靠消费、容错与监控
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
龙萱坤诺2 小时前
Claude Fable 5 重新开放:最强模型回归
大数据·运维·人工智能
龙虾PRO3 小时前
打通OpenClaw与Claude Code会话链路,实现AI全自动编码落地
大数据·人工智能
cmes_love3 小时前
如何下载沪深股票市场的行情数据,包括委托、成交、订单薄、沪深股票、etf、可转债、指数五档订单薄数据,买一到买五、卖一到卖五历史行情数据笔记
大数据·笔记
QiLinkOS3 小时前
第三视觉理解徐玉生与他的商业活动(32)
大数据·c++·人工智能·算法·开源协议