MaxCompute编译器基于MaxCompute2.0新一代的SQL引擎,显著提升了SQL语言编译过程的易用性与语言的表达能力。本文将为您介绍如何利用MaxCompute编译器的错误和告警进行排障。

为了充分展示MaxCompute编译器的易用性改进,推荐您配合使用MaxCompute Studio。

首先,请安装 MaxCompute Studio,添加MaxCompute项目并创建工程,然后新建MaxCompute脚本文件。
由上图可以发现以下问题:
  • 第一个insert语句中wm_concat函数使用有错误。
  • 第二个insert语句中有一个错误和一个告警:错误是列名写错了,告警则是MaxCompute中,比较Bigint与Double时,会隐式转换为Double。从String到Double有可能在运行时导致错误的转换,所以MaxCompute编译器会在此告警,请您确定此行为是否符合预期。
鼠标停止在错误或者告警上,会直接提示具体错误或者告警信息。如果您不修改错误而直接提交,会被MaxCompute Studio阻拦。
所以,请您按照提示修改错误和告警。

修改完毕后,再次提交脚本,便可以顺畅运行。

您也可以通过MaxCompute Studio把所有告警都设定为错误。

通过以上设置,可以避免不小心漏掉任何有可能的错误。

建议您在提交任何脚本之前,都使用MaxCompute Studio对脚本进行静态编译检查,并强烈推荐您将告警设定为错误,在提交前修改所有的告警,避免浪费时间和资源。此外,提交有错误的脚本会扣您的计算健康分,导致以后提交任务的优先级被下调,未来没有修改的告警也会被纳入到健康分体系。所以,充分利用MaxCompute编译器的错误和告警,可以避免降低优先级。

很多告警提示的是不安全的隐式类型转换,如果确定您想要的转换,可以用cast (xxx as) 的方式消除告警。此外,MaxCompute编译器还提供一种更简洁的方式:(xxx)