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 执行原理

相关文章
|
4天前
|
SQL 存储 人工智能
DMS+X构建Gen-AI时代的一站式Data+AI平台
本文整理自阿里云数据库团队Analytic DB、PostgreSQL产品及生态工具负责人周文超和龙城的分享,主要介绍Gen-AI时代的一站式Data+AI平台DMS+X。 本次分享的内容主要分为以下几个部分: 1.发布背景介绍 2.DMS重磅发布:OneMeta 3.DMS重磅发布:OneOps 4.DMS+X最佳实践,助力企业客户实现产业智能化升级
DMS+X构建Gen-AI时代的一站式Data+AI平台
|
14天前
|
人工智能 编解码 搜索推荐
深度测评-主动式智能导购 AI 助手构建的实现与优化
本文深度测评某平台提供的函数计算应用模板,用于快速搭建集成智能导购的电商网站。通过简洁直观的创建与部署流程,用户只需填写API Key等基本信息,即可完成配置。智能导购AI助手能通过多轮对话引导顾客明确需求,精准推荐商品,提升购物体验和转化率。系统支持自定义设置,具备高效、个性化、灵活扩展的特点。未来可引入更多维度推荐、机器学习及语音识别技术,进一步优化导购效果。
99 15
深度测评-主动式智能导购 AI 助手构建的实现与优化
|
12天前
|
人工智能 自然语言处理 监控
从数据洞察到动态优化:SaaS+AI引领智能化服务新时代
SaaS(软件即服务)结合AI(人工智能),正引领企业解决方案向智能化转型。SaaS+AI大幅提升了工作效率与决策质量。它能自动完成重复任务、简化设置流程、主动识别并解决潜在问题,还能根据用户需求提供个性化推荐和动态优化配置。
58 1
从数据洞察到动态优化:SaaS+AI引领智能化服务新时代
|
1月前
|
存储 人工智能 算法
【AI系统】计算图的优化策略
本文深入探讨了计算图的优化策略,包括算子替换、数据类型转换、存储优化等,旨在提升模型性能和资源利用效率。特别介绍了Flash Attention算法,通过分块计算和重算策略优化Transformer模型的注意力机制,显著减少了内存访问次数,提升了计算效率。此外,文章还讨论了内存优化技术,如Inplace operation和Memory sharing,进一步减少内存消耗,提高计算性能。
124 34
【AI系统】计算图的优化策略
|
27天前
|
人工智能 Linux API
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
PromptWizard 是微软开源的 AI 提示词自动化优化框架,通过自我演变和自我适应机制,迭代优化提示指令和上下文示例,提升大型语言模型(LLMs)在特定任务中的表现。本文详细介绍了 PromptWizard 的主要功能、技术原理以及如何运行该框架。
149 8
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
|
23天前
|
存储 人工智能 BI
Paimon 1.0: Unified Lake Format for Data + AI
本文整理自阿里云智能开源湖存储负责人李劲松在Flink Forward Asia 2024上海站主论坛的演讲。Apache Paimon于今年3月成为顶级项目,计划发布1.0版本,目标是Unified Lake Format for Data + AI,解决数据处理与AI应用中的关键问题。Paimon结合Flink打造Streaming Lakehouse解决方案,已在阿里巴巴集团及多个行业中广泛应用。来自淘天、抖音和vivo的嘉宾分享了基于Paimon + Flink技术栈的数据湖实时处理与分析实践案例。内容涵盖大数据从业者面临的痛点、Paimon的发展历程及大厂的应用经验。
387 1
Paimon 1.0: Unified Lake Format for Data + AI
|
2天前
|
存储 人工智能 关系型数据库
AnalyticDB PostgreSQL版:Data+AI 时代的企业级数据仓库
AnalyticDB PostgreSQL版是面向Data+AI时代的企业级数据仓库,涵盖产品架构、核心技术、客户案例及功能发布四大部分。产品架构包括数据分析和AI/ML的存储与计算优化;核心技术涉及高性能实时引擎Beam、向量化执行引擎Laser及优化器Orca;客户案例展示了丝芙兰和领跑汽车的应用;新功能如pgsearch全文检索和In-Database AI/ML进一步提升了性能与易用性。
|
1月前
|
人工智能 数据库 自然语言处理
拥抱Data+AI|DMS+AnalyticDB助力钉钉AI助理,轻松玩转智能问数
「拥抱Data+AI」系列文章由阿里云瑶池数据库推出,基于真实客户案例,展示Data+AI行业解决方案。本文通过钉钉AI助理的实际应用,探讨如何利用阿里云Data+AI解决方案实现智能问数服务,使每个人都能拥有专属数据分析师,显著提升数据查询和分析效率。点击阅读详情。
拥抱Data+AI|DMS+AnalyticDB助力钉钉AI助理,轻松玩转智能问数
|
21天前
|
机器学习/深度学习 数据采集 人工智能
AI在用户行为分析中的应用:实现精准洞察与决策优化
AI在用户行为分析中的应用:实现精准洞察与决策优化
87 15
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
Llama 3.3:Meta AI 开源新的纯文本语言模型,专注于多语言对话优化
Meta AI推出的Llama 3.3是一款70B参数的纯文本语言模型,支持多语言对话,具备高效、低成本的特点,适用于多种应用场景,如聊天机器人、客户服务自动化、语言翻译等。
85 13
Llama 3.3:Meta AI 开源新的纯文本语言模型,专注于多语言对话优化

热门文章

最新文章