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

简介: 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的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
7月前
|
SQL 人工智能 分布式计算
ODPS十五周年实录|构建 AI 时代的大数据基础设施
本文根据 ODPS 十五周年·年度升级发布实录整理而成,演讲信息如下: 张治国:阿里云智能集团技术研究员、阿里云智能计算平台事业部 ODPS-MaxCompute 负责人 活动:【数据进化·AI 启航】ODPS 年度升级发布
313 9
|
9月前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据存储计算服务:MaxCompute
阿里云MaxCompute是快速、全托管的TB/PB级数据仓库解决方案,提供海量数据存储与计算服务。支持多种计算模型,适用于大规模离线数据分析,具备高安全性、低成本、易用性强等特点,助力企业高效处理大数据。
427 0
|
7月前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
1409 36
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
7月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
591 1
|
10月前
|
存储 缓存 分布式计算
OSS大数据分析集成:MaxCompute直读OSS外部表优化查询性能(减少数据迁移的ETL成本)
MaxCompute直读OSS外部表优化方案,解决传统ETL架构中数据同步延迟高、传输成本大、维护复杂等问题。通过存储格式优化(ORC/Parquet)、分区剪枝、谓词下推与元数据缓存等技术,显著提升查询性能并降低成本。结合冷热数据分层与并发控制策略,实现高效数据分析。
267 2
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
1901 1
|
10月前
|
存储 分布式计算 DataWorks
从MaxCompute到Milvus:通过DataWorks进行数据同步,实现海量数据高效相似性检索
如果您需要将存储在MaxCompute中的大规模结构化数据导入Milvus,以支持高效的向量检索和相似性分析,可以通过DataWorks的数据集成服务实现无缝同步。本文介绍如何利用DataWorks,快速完成从MaxCompute到Milvus的离线数据同步。
|
10月前
|
人工智能 分布式计算 大数据
构建AI时代的大数据基础设施-MaxCompute多模态数据处理最佳实践
本文介绍了大数据与AI一体化架构的演进及其实现方法,重点探讨了Data+AI开发全生命周期的关键步骤。文章分析了大模型开发中的典型挑战,如数据管理混乱、开发效率低下和运维管理困难,并提出了解决方案。同时,详细描述了MaxCompute在构建AI时代数据基础设施中的作用,包括其强大的计算能力、调度能力和易用性特点。此外,还展示了MaxCompute在多模态数据处理中的应用实践以及具体客户案例,最后提供了体验MaxFrame解决方案的方式。
1110 2
|
9月前
|
人工智能 分布式计算 大数据
探索 ODPS:大数据时代的得力助手
在大数据蓬勃发展、 AI 技术席卷各行业的当下,阿里云 ODPS 作为大数据平台体系,凭借其强大的功能和广泛的应用,为众多从业者和企业带来了深远的影响。我有幸深入使用 ODPS,从中收获颇丰。
192 0
|
存储 分布式计算 运维
课时6:阿里云MaxCompute:轻松玩转大数据
阿里云MaxCompute是全新的大数据计算服务,提供快速、完全托管的PB级数据仓库解决方案。它拥有高效的压缩存储技术、强大的计算能力和丰富的用户接口,支持SQL查询、机器学习等高级分析。MaxCompute兼容多种计算模型,开箱即用,具备金融级安全性和灵活的数据授权功能,帮助企业节省成本并提升效率。
398 0

相关产品

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