Spark SQL中的聚合(Aggregate)实现

本文深入探讨Spark SQL中的聚合实现,包括Sort Based Aggregate和Hash Based Aggregation。详细介绍了基于排序的聚合过程,以及如何通过HashMap进行数据聚合、溢出处理和预聚合操作,以优化大数据处理效率。
摘要由CSDN通过智能技术生成

Spark SQL中的聚合(Aggregate)实现

Sort Based Aggregate

首先来说说实现比较简单(但实际执行起来却不简单)的Sort Based Aggregate。顾名思义,这是一种基于排序的聚合实现,在进行聚合之前,会根据grouping key进行分区以及分区内排序,将具有相同grouping key的记录都分布在同一个partition内且前后相邻,聚合时只需要顺序遍历整个分区内的数据,即可以得到聚合结果。

如图:

这里写图片描述

途中可以看出清晰的执行流程,包括重分区和分区内排序,最后遍历每个分区,对每个key region做一个聚合,得到最终结果。

Hash Based Aggregation

即基于Hash Map的聚合实现,一般情况下使用java的HashMap进行聚合即可,但java的内置类在使用上存在着冗余信息多、占用空间大、受GC影响的问题。故SparkSQL中实现了自己的一套HashMap,裁减掉不必要的功能,使空间利用更加充分,内存申请/释放也更有效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值