You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark中contiguous shuffle partition是什么?求非连续示例及差异

什么是Spark中的Contiguous Shuffle Partition?差异与示例

一、Contiguous Shuffle Partition 定义

在Spark自适应查询执行(AQE)的「合并后shuffle分区」逻辑里,**连续shuffle分区(Contiguous Shuffle Partition)**就是指编号连续、且数据量都远低于AQE阈值(默认128MB)的一组shuffle输出分区。AQE会自动把这些连续的小分区合并成一个或几个更大的分区,以此减少后续阶段的任务数量,降低调度和执行的开销。

简单说就是:编号连在一起的小分区,会被AQE打包合并。

二、Non-Contiguous Shuffle Partition 示例

举个实际场景:假设一次shuffle操作生成了10个分区(编号0-9),经过数据过滤后:

  • 分区0、2、4的数据量都只有10MB(远低于128MB阈值),但它们的编号是分散的,中间隔了1、3、5这些数据量正常的分区
  • 这三个分区就是非连续shuffle分区(Non-Contiguous Shuffle Partition),AQE不会把它们合并,因为它们的编号没有形成连续的区间,只能保留为独立的小任务执行。

再比如:某电商订单数据按用户ID哈希shuffle后,分区1、3、7对应的用户群体刚好是被过滤掉的测试用户,导致这三个分区数据量极小,但它们的编号不连续,这也是典型的非连续小分区。

三、二者核心差异

  • 编号特征:
    • Contiguous:分区编号是连续的区间(比如0-3、6-8)
    • Non-Contiguous:分区编号分散,没有连续的区间(比如1、4、7)
  • AQE处理方式:
    • Contiguous:会被AQE自动合并,减少后续任务数,提升效率
    • Non-Contiguous:无法被AQE的合并逻辑处理,仍以小分区形式存在,带来不必要的调度开销
  • 产生场景:
    • Contiguous:多是shuffle时某段key范围的数据量天然偏小(比如某地区用户订单量少,对应哈希区间的分区连续且小)
    • Non-Contiguous:多因数据过滤、key分布极度不均导致(比如零散的测试数据对应分散的分区编号,过滤后这些分区数据量骤降)

内容的提问来源于stack exchange,提问作者Pavel Orekhov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:42:40