Spark中distinct操作第二阶段计算的执行位置:Driver还是Executor?
Spark Distinct 操作的第二阶段去重位置说明
Spark中distinct操作的第二阶段去重完全在Executor层面执行,不会将所有数据传递到Driver节点处理,具体流程细节如下:
- 第一阶段:每个Executor上的分区先执行本地去重——通过哈希计算筛选出当前分区内的唯一值,生成形如
(value, null)的键值对。 - 第二阶段:通过Shuffle操作将相同哈希值的键值对分发到同一个Executor的目标分区,随后在该Executor的分区内对聚合后的键值对再次去重,最终得到全局唯一的结果。
这种分布式去重的设计,核心是为了避免将全量数据集中到Driver节点引发内存溢出(OOM),充分利用集群中Executor的分布式计算能力来完成全局去重。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

