MaxCompute - ODPS重装上阵 第一弹 - 善用MaxCompute编译器的错误和警告

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: MaxCompute (ODPS) ( __注1__ )是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 ODPS2.0除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力。

MaxCompute (ODPS) ( 注1 )是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 ODPS2.0除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力。

基于ODPS2.0新一代的SQL引擎,MaxCompute显著提升了SQL语言编译过程的易用性与语言的表达能力。
我们在此推出MaxCompute(ODPS2.0)重装上阵系列文章

第一弹 - 善用MaxCompute编译器的错误和警告
第二弹 - 新的基本数据类型与内建函数
第三弹 - 复杂类型
第四弹 - CTE,VALUES,SEMIJOIN

这次首先向您介绍在易用性方面的改进。

  • 场景1
    作为ODPS的开发者,提交了一段SQL脚本,里面两句SQL,等了半天排上队,结果发现第一句里面有个函数的参数类型错误,白等了。。。;修改脚本后再次提交,排队,第一条语句用了两个小时跑完了,然后报告第二个语句漏了半边括号。。。
  • 场景2
    _我的上游数据有个表create table my_upperstream(..., id string) partitioned by (...), 我的项目每天有一个任务要和my_uppertstream在id上join,... join my_upperstream u on id = u.id,过去没有问题,最近总是发现有些数据莫名其妙的丢失,经过几天痛苦的debug,终于发现是因为我的id是bigint,在和u.id比较的时候,都竟然转成了double,因为浮点误差导致某些列join不上_( 注2 );

怒气冲冲在ODPS用户群中中质问,竟然告诉我这个是by design! 。。。

MaxCompute编译器基于ODPS2.0全新自主研发的SQL引擎,尤其配合使用MaxCompute Studio,提供了丰富的错误提示与警告的功能。可完全避免以上问题。

编译器的易用性改进

为了充分发挥MaxCompute编译器的易用性改进,最好配合MaxCompute Studio (D2平台对ODPS2.0的错误与警告的支持正在积极开发中,预计今年9月份上线,敬请期待!)。首先,请安装MaxCompute Studio导入测试MaxCompute项目,创建工程,建立一个新的MaxCompute脚本文件, 如下

screenshot.png

可以看到

  1. 第一个insert语句中wm_concat函数使用有错误
  2. 第二个insert有一个错误和一个警告,错误是列名写错了
  3. 警告则是上面场景二种提到的,ODPS中当比较bigint与double的时候,会隐含的都转为double, 因为从string到double是有可能在运行时导致错误的转换,所以MaxCompute编译器会在此警告要您确定这个是不是您希望的行为
  4. 鼠标停止在错误或者警告( 注3 )上,会直接提示具体错误或者警告信息。

如果我不修改错误,直接提交,会被MaxCompute Studio挡住,如下图
screenshot.png

按照提示修改错误和警告,如下图,

screenshot.png

再次提交,可以顺利的运行,再也不用担心因为语法错误白等了!

事实上,使用MaxCompute Studio可以把所有警告都设定为错误,如下图

screenshot.png

这样就可以保证不会不小心漏掉任何有可能的错误!

MaxCompute团队建议您在提交任何脚本之前,都使用MaxCompute Studio对脚本进行静态编译检查,并强烈推荐将警告设定为错误,在提交前修改所有的警告,这样可以花很少的时间避免大量花费大量计算与人力资源的错误。

除了可以帮助您节省时间外,也可以节省MaxCompute服务器端资源,目前每天MaxCompute SQL服务器花大笔计算资源在编译那些有错误的SQL,连累没有错误的也要跟着排队。

另外您知道吗?提交有错误的脚本会导致扣您的计算健康分,导致以后提交任务的优先级被下调!某些警告报告的问题也会导致扣除健康分,使用MaxCompute Compiler和Studio,可以帮助您避免此类扣分,避免被降级!

警告中很多情况是不安全的隐式类型转换,如果确实是想要的转换,可以用cast (xxx as )的方式消除警告,如果觉得这么写麻烦,MaxCompute 编译器还提供一种简洁的方式(xxx),如上面修改过的脚本所示。具体该用哪种完全取决于您的偏好。MaxCompute还有一系列的SQL语言方面的改进,此系列会向您逐一介绍。

小节

基于ODPS2.0 SQL引擎的MaxCompute新编译器配合MaxCompute Studio,通过完整准确地报告错误于警告,可以显著提高用户的生产力。不过提升生产力不能只靠准确的错误和警告,丰富强大的SQL语言表达能力一样重要,从下一篇开始,我们向您介绍MaxCompute在SQL语言上的各项改进!

标注

  • 注1 MaxCompute就是ODPS,是ODPS在阿里云上的品牌,本系列文章中,MaxCompute与ODPS可以通用。
  • 注2 为什么int = string的时候要转double呢?因为这个是Hive的行为,MaxCompute(原ODPS) 在当初第一版的时候,为了替换当时广泛使用的Hive脚本,不得不兼容。现在有了警告,只要大家按照建议的方式使用MaxCompute,在需要的时候修改提示的问题,就不会再掉进这个坑里了!
  • 注3 对于警告的标注,我的设定是黄色波浪线,可以通过IntelliJ的Settings来修改,如下
    screenshot.png
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
90 1
|
3月前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
3月前
|
人工智能 分布式计算 架构师
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
|
3月前
|
SQL 存储 分布式计算
MaxCompute 入门:大数据处理的第一步
【8月更文第31天】在当今数字化转型的时代,企业和组织每天都在产生大量的数据。有效地管理和分析这些数据变得至关重要。阿里云的 MaxCompute(原名 ODPS)是一个用于处理海量数据的大规模分布式计算服务。它提供了强大的存储能力以及丰富的数据处理功能,让开发者能够快速构建数据仓库、实时报表系统、数据挖掘等应用。本文将介绍 MaxCompute 的基本概念、架构,并演示如何开始使用这一大数据处理平台。
531 0
|
3月前
|
SQL 分布式计算 大数据
"大数据计算难题揭秘:MaxCompute中hash join内存超限,究竟该如何破解?"
【8月更文挑战第20天】在大数据处理领域,阿里云的MaxCompute以高效稳定著称,但复杂的hash join操作常导致内存超限。本文通过一个实例解析此问题:数据分析师小王需对两个共计300GB的大表进行join,却遭遇内存不足。经分析发现,单个mapper任务内存默认为2GB,不足以支持大型hash表的构建。为此,提出三种解决方案:1) 提升mapper任务内存;2) 利用map join优化小表连接;3) 实施分而治之策略,将大表分割后逐一处理再合并结果。这些方法有助于提升大数据处理效率及稳定性。
84 0
|
3月前
|
SQL 分布式计算 大数据
"揭秘MaxCompute大数据秘术:如何用切片技术在数据海洋中精准打捞?"
【8月更文挑战第20天】在大数据领域,MaxCompute(曾名ODPS)作为阿里集团自主研发的服务,提供强大、可靠且易用的大数据处理平台。数据切片是其提升处理效率的关键技术之一,它通过将数据集分割为小块来优化处理流程。使用MaxCompute进行切片可显著提高查询性能、支持并行处理、简化数据管理并增强灵活性。例如,可通过SQL按时间或其他维度对数据进行切片。此外,MaxCompute还支持高级切片技术如分区表和分桶表等,进一步加速数据处理速度。掌握这些技术有助于高效应对大数据挑战。
112 0
|
4月前
|
分布式计算 运维 DataWorks
MaxCompute操作报错合集之用户已在DataWorks项目中,并有项目的开发和运维权限,下载数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4月前
|
分布式计算 运维 大数据
混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践。
除了资源效率和成本的优势外,混合云模式还为斗鱼带来了可量化的成本、增值服务以及额外的专业服务。阿里云的专业团队可以为斗鱼提供技术咨询和解决方案,帮助斗鱼解决业务难题。此外,计算资源的可量化也使得斗鱼能够清晰地了解资源使用情况,为业务决策提供依据。
|
4月前
|
存储 SQL 机器学习/深度学习
阿里云数加大数据计算服务MaxCompute学习路线图:从入门到精通
将所学知识应用于实际工作中并不断进行实践和创新是提升技术能力的关键所在。用户可以结合业务需求和技术发展趋势积极探索新的应用场景和解决方案,并在实践中不断总结经验和教训以提升自己的技术水平和实践能力。
|
4月前
|
SQL 分布式计算 数据处理
SQL 能力问题之MaxCompute(ODPS)SQL有哪些特点
SQL 能力问题之MaxCompute(ODPS)SQL有哪些特点

相关产品

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