一些MaxCompute日常优化案例分享

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务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性能优化是数据开发人员的必备技能,降低成本同时也能让乏味的工作有一丝丝乐趣。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
12天前
|
SQL 分布式计算 运维
如何对付一个耗时6h+的ODPS任务:慢节点优化实践
本文描述了大数据处理任务(特别是涉及大量JOIN操作的任务)中遇到的性能瓶颈问题及其优化过程。
|
22天前
|
大数据 机器人 数据挖掘
这个云ETL工具配合Python轻松实现大数据集分析,附案例
这个云ETL工具配合Python轻松实现大数据集分析,附案例
|
30天前
|
存储 人工智能 算法
AI与大数据的结合:案例分析与技术探讨
【8月更文挑战第22天】AI与大数据的结合为各行各业带来了前所未有的机遇和挑战。通过具体案例分析可以看出,AI与大数据在电商、智能驾驶、医疗等领域的应用已经取得了显著成效。未来,随着技术的不断进步和应用场景的不断拓展,AI与大数据的结合将继续推动各行业的创新与变革。
|
1月前
|
数据采集 数据可视化 大数据
【优秀python大屏案例】基于python flask的前程无忧大数据岗位分析可视化大屏设计与实现
本文介绍了一个基于Python Flask框架的前程无忧大数据岗位分析可视化大屏系统,该系统通过爬虫技术采集招聘数据,利用机器学习算法进行分析,并以可视化大屏展示,旨在提高招聘市场数据分析的效率和准确性,为企业提供招聘决策支持和求职者职业规划参考。
|
21天前
|
存储 分布式计算 数据处理
MaxCompute 的成本效益分析与优化策略
【8月更文第31天】随着云计算技术的发展,越来越多的企业选择将数据处理和分析任务迁移到云端。阿里云的 MaxCompute 是一款专为海量数据设计的大规模数据仓库平台,它不仅提供了强大的数据处理能力,还简化了数据管理的工作流程。然而,在享受这些便利的同时,企业也需要考虑如何有效地控制成本,确保资源得到最优利用。本文将探讨如何评估 MaxCompute 的使用成本,并提出一些优化策略以降低费用,提高资源利用率。
18 0
|
30天前
|
大数据 RDMA
神龙大数据加速引擎MRACC问题之MRACC-Spark利用eRDMA近网络优化插件来提升性能如何解决
神龙大数据加速引擎MRACC问题之MRACC-Spark利用eRDMA近网络优化插件来提升性能如何解决
31 0
|
30天前
|
SQL 存储 分布式计算
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
24 0
|
2月前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之针对MaxCompute查询结果排队问题,该如何优化
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
59 10
|
1月前
|
存储 SQL JSON
一些MaxCompute日常优化案例分享
MaxCompute优化是一个多样而又重要的过程,优化过程需要能够深入理解ODPS的工作原理和内部机制,本文总结了以下几个日常优化案例,最终优化手段可能非常简单,但其中的分析过程较为重要,希望对大家有所启发。
|
2月前
|
大数据 数据处理 计算机视觉
使用LabVIEW进行大数据数组操作的优化方法
使用LabVIEW进行大数据数组操作的优化方法
65 3

热门文章

最新文章

相关产品

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