DATA AI Summit 2022提及到的对 aggregate 的优化

简介: DATA AI Summit 2022提及到的对 aggregate 的优化

背景


本文基于SPARK 3.3.0


HashAggregate的优化

该优化是FaceBook(Meta) 内部的优化,还有合并到spark社区。

该优化的主要是partialaggregate的部分:对于类似求count,sum,Avg的聚合操作,会存在现在mapper进行部分聚合的操作,之后在reduce端,再进行FinalAggregate操作。这看起来是没有问题的(能够很好的减少网络IO),但是我们知道对于聚合操作,我们会进行数据的spill的操作,如果在mapper阶段合并的数据很少,以至于抵消不了网络IO带来的消耗的话,这无疑会给任务带来损耗。

874a8e4b1f2049e5b90b054e4a2abd1e.png

964d47901ff14cab9ac60e63955e30c8.png

4f02bf94d848458ebd2f0508d8ba3242.png

78dd4c6f123d42869975e1db8647f264.png

利用运行时的指标信息,能够达到比较好的加速效果。

7af2035a744d4819ba269e2200decc8f.png


ObjectHashAggregate的优化


对于ObjectHashAggreate的原理,可以参考深入理解SPARK SQL 中HashAggregateExec和ObjectHashAggregateExec以及UnsafeRow,该文可以比较清楚的解释ObjectHashAggregate和HashAggregate的区别:


ObjectHashAggregate能够弥补HashAggregate 不能支持collect_set等这种表达式,从而不会转变为SortAggregate

ObjectHashAggregate利用的是java Array对象(SpecificInternalRow)保存聚合的中间缓冲区,这对jvm gc是不太友好的

ObjectHashAggregate根据hashMap的size(默认是128),而不是输入的行数来进行spill,这会导致提前spill,内存利用率不高。

由于提前的spill,ObjectHashAggregate会对剩下的所有数据做额外的一次排序操作(如果没有spill,就不需要额外的sort操作),而HashAggregate则是会对每次需要spill的数据做排序

使用jvm heap的内存使用情况以及处理的行数来指导什么时候开始spill。

但是这种在数据倾斜的情况下,会增加OOM的风险。


SortAggregate优化


目前SortAggreaget的现状是:


每个任务在sort Aggreate前需要按照key进行排序

根据排序的结果,在相邻的行之间进行聚合操作

不同于Hash Aggregate:

不需要hashTable,也就不存在内存溢写和回退到sortAggregate

优化器更喜欢选择hashAggregate

没有codegen的实现.

目前在spark 3.3.0增加的功能:


如果数据是有序的话,会选择用sortAggragate替代HashAggregate

通过物理计划Rule ReplaceHashWithSortAgg 来做替换,当然通过spark.sql.execution.replaceHashWithSortAgg来开启(默认是关闭的),因为对于任何新特性,在release版本默认都是关闭的,在master分支才是开启的

支持sortAggretate(without keys)的codegen代码生成


其他


对于Aggregate更多的细节了解可以参考sparksql源码系列 | 一文搞懂with one count distinct 执行原理

相关文章
|
16天前
|
机器学习/深度学习 人工智能 JSON
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
91 18
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
|
20天前
|
人工智能 API 语音技术
WhisperChain:开源 AI 实时语音转文字工具!自动消噪优化文本,效率翻倍
WhisperChain 是一款基于 Whisper.cpp 和 LangChain 的开源语音识别工具,能够实时将语音转换为文本,并自动清理和优化文本内容,适用于会议记录、写作辅助等多种场景。
640 2
WhisperChain:开源 AI 实时语音转文字工具!自动消噪优化文本,效率翻倍
|
1月前
|
人工智能 JSON PyTorch
TPO:告别微调!这个AI框架让大模型实时进化:无需训练直接优化,输入问题越用越聪明,输出质量暴涨50%
TPO(Test-Time Prompt Optimization)框架,通过奖励模型和迭代反馈优化大语言模型输出,无需训练即可显著提升性能,支持动态对齐人类偏好,降低优化成本。
190 8
TPO:告别微调!这个AI框架让大模型实时进化:无需训练直接优化,输入问题越用越聪明,输出质量暴涨50%
|
24天前
|
存储 人工智能 API
SPO:如何优化提示词?大模型最懂如何优化自己!开源自监督提示词优化工具,让AI自主优化提示词
本文介绍由DeepWisdom与香港科技大学联合研发的SPO框架,通过自我监督机制实现大语言模型提示优化,仅需3个样本即可达到SOTA效果,优化成本降低至传统方法的1.1%-5.6%。
156 0
SPO:如何优化提示词?大模型最懂如何优化自己!开源自监督提示词优化工具,让AI自主优化提示词
|
24天前
|
数据采集 人工智能 编解码
算法系统协同优化,vivo与港中文推出BlueLM-V-3B,手机秒变多模态AI专家
BlueLM-V-3B是由vivo与香港中文大学共同研发的多模态大型语言模型,专为移动设备优化。它通过算法和系统协同优化,实现了高效部署和快速生成速度(24.4 token/s),并在OpenCompass基准测试中取得优异成绩(66.1分)。模型小巧,语言部分含27亿参数,视觉编码器含4000万参数,适合移动设备使用。尽管如此,低端设备可能仍面临资源压力,实际应用效果需进一步验证。论文链接:https://arxiv.org/abs/2411.10640。
41 9
|
22天前
|
存储 人工智能 BI
Paimon 1.0: Unified Lake Format for Data + AI
Paimon 1.0: Unified Lake Format for Data + AI
|
1月前
|
人工智能 关系型数据库 分布式数据库
3月5日(周三),Data+AI Workshop(深圳站)邀您参加!
本期沙龙将深度解析阿里云自研数据库PolarDB与AI的融合,涵盖应用场景、核心技术及实践案例,助力企业快速拥抱AI,实现业务落地和价值创造。立即免费报名参加,前50位参会者还可获精美伴手礼!
|
1月前
|
人工智能 BI 自然语言处理
【瓴羊数据荟】 共话AI×Data的企业应用进化,瓴羊「数据荟」MeetUp城市行上海场顺利收官!
瓴羊「数据荟」Meet Up城市行系列活动第四期活动将于3月7日在上海举办,由中国信息通信研究院与阿里巴巴瓴羊专家联袂呈现,共同探讨AI时代的数据应用实践与企业智能DNA的革命性重构。
【瓴羊数据荟】  共话AI×Data的企业应用进化,瓴羊「数据荟」MeetUp城市行上海场顺利收官!
|
22天前
|
人工智能 开发者
AI Forward: Alibaba Cloud Developer Summit 2025 开放注册中
AI Forward: Alibaba Cloud Developer Summit 2025 开放注册中
|
22天前
|
人工智能 Go 开发者
倒计时1天!这里查收AI Forward: Alibaba Cloud Developer Summit 2025大会议程
倒计时1天!这里查收AI Forward: Alibaba Cloud Developer Summit 2025大会议程

热门文章

最新文章