一些MaxCompute日常优化案例分享

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: MaxCompute优化是一个多样而又重要的过程,优化过程需要能够深入理解ODPS的工作原理和内部机制,本文总结了以下几个日常优化案例,最终优化手段可能非常简单,但其中的分析过程较为重要,希望对大家有所启发。

前言:

     MaxCompute优化优化是一个多样而又重要的过程,优化过程需中若能够深入理解ODPS的工作原理和内部机制,才能够更明确的发现运行过程中存在的问题,这样才能更有针对性地进行优化,优化需要不断思考和尝试不同的想法和方法,适当的时候我们可以寻求平台技术人员帮助,以找到最适合的优化方案。

以下通过日常几个优化案例,最终优化手段可能非常简单,但其中的分析过程较为重要,希望对他人有所启发。

1,dmj针对多union的一种优化

任务内容: 多个表union all 后对其中的一些表进行distmapjoin关联。

任务线上经常报内存不够导致起夜,以往处理基本是增加内存,内存到8192后则增加shard_count数量来减少内存使用,此种治标不治本的手段无法根治问题,仔细分析执行任务图发现,其中对应的加工逻辑有多个union all +distmapjoin,导致不合理的执行图如下:

image.png

图中可以看出一份数据对应4次分发(主表有union all四份数据),个人分析一个distmapjoin对应多路分发不合理,合理应该分发一份,但个人无法处理,寻求平台人员:

image.png

image.png

经测试此参数无效,平台人员给出另一参数。

image.png

关键参数:

set odps.optimizer.union.split.enable=false;

效果:执行图变的更加清爽,相对原来30步变为21步。

image.png

修改前资源消耗:

image.png

修改后资源消耗:

image.png

小结:

由于消除了union all对应同一表多个distmap分发,最终运行cu及内存都减少一大半,整体运行稳定性提高。但我们开发任务时还是尽量不要加各种参数,去参数化也是平台人员的优化方向。

btw:关于参数设置带来收益问题可能很多人会有疑问,为什么平台不直接默认这些参数的合理设置,因为很多坏例子平台人员看到了而我们没有感知。当把这些坏例子消除则参数就不需要设置。

2,一个json解析参数的优化

前几天在针对一些计算资源较大任务排查时发现一任务曝光任务,任务整体执行一个小时,执行计划较简洁。

image.png

image.png

一千四百亿数据量运行一小时也问题不大,但当点击执行图中M5的详细内容如后

image.png

发现除读写外,project1算子占比64%(时间都花在这了),而且发现里面内容get_json_object调用9次,时间应该就是花在此处,记得多个get_json_object现在平台会自动转化为GET_JSON_OBJECT_TUPLE,但此处的确没有。因此任务增加参数

set odps.sql.udf.getjsonobj.new =true;

查看第二天任务运行情况,已转为GET_JSON_OBJECT_TUPLE批量取数,且project1算子占比出变成34%。

image.png

效果:

执行时间对比:

image.png

加参数前:

image.png image.png

加参数后:

image.png

image.png

整体可以看出,加参数前平均实例由15分钟变成7分钟,计算cu及内存将近下降一半,效果非常显著。

小结:

优化的过程往往都不是什么高大上,建议正确的技能认知、有意识的发现及定位问题,解决问题可能就非常简单。

3,一个去group by 操作的优化

image.png

一位同学咨询一个问题,由于数据量特别大,里面涉及数据膨胀且最终group by做汇总,整体消耗非常大,但发现group by前后数据量只有微小变化,因此沟通是否可以剔除group by操作。

image.png

image.png

而且此数据是先膨胀后,里面有非常多的字段行间是相同的,因此增加重排可能会有较好效果,因此建议同学对sql进行改写

image.png

最终结果:

存储:

image.png

此处数据量由600亿变900亿不是因为剔除了group by操作,是因为当天业务量增长的变成造成,但可以看到,由于增加了局部重排,存储减少非常多。

时间:

image.png

image.png

小结:

很多时候group by 操作是否必要有业务要求,但也应该关注数据量的变化,一般情况需要考虑指数级别的数量减少,另外优化需要结合着多种手段,此处增加事中重排,存储减少带来收益的同时,下游读表的资源也将大大减少。最后的最后,若表只是简单map操作,那就变成简单加工,就应该考虑干掉这个任务或者视图替代了。

总结:

odps性能优化是数据开发人员的必备技能,降低成本同时也能让乏味的工作有一丝丝乐趣。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
28天前
|
存储 分布式计算 大数据
MaxCompute聚簇优化推荐功能发布,单日节省2PB Shuffle、7000+CU!
MaxCompute全新推出了聚簇优化推荐功能。该功能基于 31 天历史运行数据,每日自动输出全局最优 Hash Cluster Key,对于10 GB以上的大型Shuffle场景,这一功能将直接带来显著的成本优化。
91 3
|
2月前
|
数据采集 搜索推荐 算法
大数据信息SEO优化系统软件
大数据信息SEO优化系统软件(V1.0)是公司基于“驱动企业价值持续增长”战略,针对企业网站、电商平台及内容营销场景深度定制的智能化搜索引擎优化解决方案。该软件以“提升搜索排名、精准引流获客”为核心目标,通过整合全网数据采集、智能关键词挖掘、内容质量分析、外链健康度监测等功能模块,为企业构建从数据洞察到策略落地的全链路SEO优化体系,助力品牌高效提升搜索引擎曝光度,实现从流量获取到商业转化的价值升级。
68 2
|
3月前
|
资源调度 安全 Java
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
88 1
|
1月前
|
机器学习/深度学习 数据采集 搜索推荐
你以为是“说走就走”?其实是“算好才走”:大数据是怎么悄悄优化旅游体验的?
你以为是“说走就走”?其实是“算好才走”:大数据是怎么悄悄优化旅游体验的?
53 0
|
2月前
|
机器学习/深度学习 分布式计算 Java
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用(199)
本文探讨了Java大数据与机器学习模型在遥感图像土地利用分类中的优化与应用。面对传统方法效率低、精度差的问题,结合Hadoop、Spark与深度学习框架,实现了高效、精准的分类。通过实际案例展示了Java在数据处理、模型融合与参数调优中的强大能力,推动遥感图像分类迈向新高度。
|
2月前
|
机器学习/深度学习 存储 Java
Java 大视界 -- Java 大数据机器学习模型在游戏用户行为分析与游戏平衡优化中的应用(190)
本文探讨了Java大数据与机器学习模型在游戏用户行为分析及游戏平衡优化中的应用。通过数据采集、预处理与聚类分析,开发者可深入洞察玩家行为特征,构建个性化运营策略。同时,利用回归模型优化游戏数值与付费机制,提升游戏公平性与用户体验。
|
SQL 分布式计算 大数据
MaxCompute 聚簇优化推荐简介
在大数据计算中,Shuffle 是资源消耗最大的环节之一。MaxCompute 提供聚簇优化推荐功能,通过调整 Cluster 表结构,有效减少 Shuffle 量,显著提升作业性能并节省计算资源。实际案例显示,该功能可帮助用户每日节省数 PB 的 Shuffle 数据量及数千 CU 的计算成本。
69 0
|
3月前
|
存储 缓存 分布式计算
OSS大数据分析集成:MaxCompute直读OSS外部表优化查询性能(减少数据迁移的ETL成本)
MaxCompute直读OSS外部表优化方案,解决传统ETL架构中数据同步延迟高、传输成本大、维护复杂等问题。通过存储格式优化(ORC/Parquet)、分区剪枝、谓词下推与元数据缓存等技术,显著提升查询性能并降低成本。结合冷热数据分层与并发控制策略,实现高效数据分析。
Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
本文围绕基于 Java 的大数据分布式存储在视频监控数据管理中的应用展开,分析管理现状与挑战,阐述技术应用,结合案例和代码给出实操方案。
|
5月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。

相关产品

  • 云原生大数据计算服务 MaxCompute