如何理解maxcompute常见报错信息?【阿里云MVP月度分享】

简介: 貌似大部分人在遇到报错的时候,都懒得用翻译软件翻译报错信息,一般直接抛出来问,甚至连报错信息都懒得复制,直接截图出来。所以这里特地总结了一下,最近一段时间有人经常在群里问到的报错信息。 ODPS-0130252:Cartesian product is not allowed “不允许笛卡尔积”主要是为了防止用户误操作,不小心漏了关联条件,造成大量的资源的耗费。

貌似大部分人在遇到报错的时候,都懒得用翻译软件翻译报错信息,一般直接抛出来问,甚至连报错信息都懒得复制,直接截图出来。所以这里特地总结了一下,最近一段时间有人经常在群里问到的报错信息。

ODPS-0130252:Cartesian product is not allowed

“不允许笛卡尔积”
主要是为了防止用户误操作,不小心漏了关联条件,造成大量的资源的耗费。特别,如果是后付费用户,做大表的笛卡尔积会占用大量的计算资源,会影响整个资源池的其他用户的正常使用。
大部分场景下,笛卡尔积都不是用户的本意。对于真的想做笛卡尔积的用户,也有解决办法:
(1)有小表的时候,使用mapjoin
(2)没有小表的时候,左右两张都单独新增一个字段,例如 1 as join_column ,关联时候用t1.join_column = t2.join_column

ODPS-0130241:Illegal union operation - type mismatch for column 12 of UNION, left is BIGINT while right is STRING

“union左右两边字段类型不一致”
union左右两边的字段个数、字段名、字段类型需要完全一致。特别注意有种情况union中的某个表的某个字段值为显示的NULL,比如NULL as col1,但其他表的该字段为bigint,那么需要cast(NULL AS bigint) as col1

ODPS-0130111:Subquery partition pruning exception - records returned from subquery exceeded limit of 1000.

“子查询结果数大于1000行”
这是maxcompute的限制。子查询一般是习惯于使用传统数据库的开发,经常用的查询方式。而实际上,无论是MYSQL还是maxcompute,都不建议使用子查询。在maxcompute中一般会用多表关联来解决问题。

ODPS-0130071:Semantic analysis exception - physical plan generation failed: java.lang.RuntimeException: Table(xxxx) is full scan with all partitions, please specify partition predicates.

“分区表不允许全表扫描,必须指定分区值”
这条限制主要用来防止用户误操作,造成大量的金钱和时间上的浪费。很可能用户的本意只是随便挑两条数据看看,却习惯性的随手写了一个select * from table1;其实无论是mysql还是maxcompute,都不建议写select * 扫描全表。
对于随便挑两条数据看看的需求,推荐使用read关键字,read table1 partition (pt = xxx) 10;即在表table1的pt=xxx分区中随便挑10条数据出来看看。read关键字不会讲任务转化成MR任务,可以直接返回。
而如果真的需要扫描全表,则可以添加分区字段的范围查询,例如pt >= '2000' and pt <= '2099'。养成添加分区字段筛选条件的好习惯。

ODPS-0130071:[1,10] Semantic analysis exception - encounter runtime exception while evaluating function /, detailed message: DIVIDE func result NaN, two params are 0.000000 and 0.000000

“除数为0”
这个错误信息虽然写的比较绕弯,但是还是可以理解的。所有涉及到除法的地方,都必须增加分母不为0的判断,if(bb IS NOT NULL AND bb <> 0, aa / bb ,NULL)

ODPS-0123111:Format string does not match datetime string

“字符串格式不符合datetime类型”
maxcompute中的datetime类型其实很好理解,和yyyy-MM-dd HH:mm:ss格式的字符串几乎是完全等价的。比如unix_timestamp('2018-01-01 00:00:00')就是正常结果,如果写成unix_timestamp('2018-01-01')结果就是NULL。

ODPS-0123031:ODPS partition exception - maximum 60000 partitions allowed

“单表最多6万个分区”
一个表不允许超过6万的分区,如果分区过多,就要考虑重新设计分区了。

ODPS-0130071:Semantic analysis exception - Top level UNION is not supported

“不允许最外层使用union”
外边再套一层select就行了。select * from (select a from table1 union all select a from table2) t;

ODPS-0130161:Parse exception - invalid token ')'

“不合法字符”
这种情况一般就是HQL写错了。原因可能多种多样,一般可以肉眼检查出来。
目前dataworks已经支持了编译时错误的自动检测。

ODPS-0420061: Invalid parameter in HTTP request - Fetched data is larger than the rendering limitation. Please try to reduce your limit size or column number.

“获取数据量过大”
一般这种情况比较容易发生在“大宽表”的情况下,也可能是某个字符串类型的字段值过长。解决办法就是指定select 出来的字段、或者限制条数。

ODPS-0130071:Semantic analysis exception - only a single expression in the SELECT clause is supported with UDTF's

“select后边只能有一个单独的UDTF”
如果想把UDTF放在select后边,那么这个select里就只能有这一个UDTF,不能有其他任何字段。
如果不是只想要这一个UDTF,那就要结合着lateral view一起用了。

最后补充一句

抛出问题给别人,是想让别人帮忙解决的。我发现很多人提问,习惯把问题描述到一个“绝不可能出问题”的情景下,但是还“偏偏出问题”了。

“我XXX也检查过了,XXX也检查过了,XXX也找人看过了,也在别人电脑上试过了,XXX和官方文档上也一模一样,之前运行过都没问题的,现在出问题了,到底是怎么回事儿呢? ”

这就不是一个想解决问题的态度。有人会在去医院看病的时候,坐在医生对面说,“我什么事儿都没有,好得很”么?

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
2月前
|
人工智能 数据管理 Serverless
阿里云数据库走向Serverless与AI驱动的一站式数据平台具有重大意义和潜力
阿里云数据库走向Serverless与AI驱动的一站式数据平台具有重大意义和潜力
404 2
|
2月前
|
人工智能 运维 Cloud Native
、你如何看待阿里云数据库走向Serverless与AI驱动的一站式数据平台?
、你如何看待阿里云数据库走向Serverless与AI驱动的一站式数据平台?
149 2
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
714 2
|
2月前
|
SQL 存储 分布式计算
maxcompute配置问题之配置mc内容如何解决
MaxCompute配置是指在使用阿里云MaxCompute服务时对项目设置、计算资源、存储空间等进行的各项调整;本合集将提供MaxCompute配置的指南和建议,帮助用户根据数据处理需求优化其MaxCompute环境。
31 1
|
2月前
|
人工智能 数据管理 大数据
阿里云数据库走向Serverless与AI驱动的一站式数据平台是一个很有前景和意义的发展方向
阿里云数据库走向Serverless与AI驱动的一站式数据平台是一个很有前景和意义的发展方向
33 2
|
21天前
|
机器学习/深度学习 分布式计算 数据挖掘
阿里云 MaxCompute MaxFrame 开启免费邀测,统一 Python 开发生态
阿里云 MaxCompute MaxFrame 正式开启邀测,统一 Python 开发生态,打破大数据及 AI 开发使用边界。
198 1
|
1月前
|
弹性计算 大数据 测试技术
2024年阿里云服务器报价参考,阿里云服务器活动优惠配置价格信息整理汇总
随着云计算技术的日益成熟,云服务器已成为众多企业和个人的首选。在众多云服务商中阿里云以其稳定的性能、高性价比而备受瞩目。今天,就为大家带来2024年最新的阿里云服务器优惠价格信息。 阿里云服务器: 轻量应用服务器及ECS优惠价格: 2核2G3M轻量应用服务器:一年62元 2核2G3M经济型e实例云服务器ECS:一年99元 2核4G通用算力型u1实例云服务器ECS:一年706.25元 2核8G通用算力型u1实例云服务器ECS:一年877.32元
|
1月前
|
弹性计算 Ubuntu Linux
2024年阿里云幻兽帕鲁Palworld游戏服务器价格信息整理总结
在探索《幻兽帕鲁》这款独特开放世界生存游戏的过程中,你是否曾想过拥有一台专属的游戏服务器,与好友一同畅享不受限的冒险体验?现在,阿里云为你提供了这一绝佳机会!
23 0
|
1月前
|
弹性计算 搜索推荐
阿里云幻兽帕鲁专用服务器多少钱?2024年阿里云幻兽帕鲁Palworld服务器收费报价信息整理
在追求极致游戏体验的道路上,阿里云为幻兽帕鲁的玩家们带来了一个重磅好消息:专用的游戏服务器正式上线!这不仅意味着更加流畅、稳定的游戏环境,更代表着个性化游戏体验的新篇章。对于游戏爱好者来说,服务器的选择直接关系到游戏体验的优劣。阿里云针对幻兽帕鲁推出的专用服务器,提供4核16G和8核32G两种配置选择,充分满足不同玩家的需求。其中,4核16G配置仅需26元/月起,适合小型团队或个人玩家,轻松支持最多8人同时在线;而8核32G配置则以90元/月的价格,为大型团队或追求更高性能的玩家提供强力支持,最多可容纳20人同时畅游游戏世界。
38 0
|
1月前
|
人工智能 DataWorks 数据可视化
心动基于阿里云DataWorks构建游戏行业通用大数据模型
心动游戏在阿里云上构建云原生大数据平台,基于DataWorks构建行业通用大数据模型,如玩家、产品、SDK、事件、发行等,满足各种不同的分析型应用的要求,如AI场景、风控场景、数据分析场景等。
334 1

相关产品

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