SaaS模式云数据仓库 MaxCompute 问答整理之2020-09~10月-阿里云开发者社区

开发者社区> 阿里巴巴大数据计算> 正文

SaaS模式云数据仓库 MaxCompute 问答整理之2020-09~10月

简介: 飞天大数据平台计算引擎MaxCompute成为全球首个TPCx-BB认证的公共云产品,是除Hive、Spark以外TPCx-BB第三个标准支持的大数据引擎。

本文是基于本人对MaxCompute产品的学习进度,再结合开发者社区钉群里的一些问题,进而整理成文。希望对大家有所帮助。

问题一、MaxCompute中,同一时间操作同一张表的同一分区,会产生数据翻倍的情况吗?
不会,MaxCompute在更新元数据的时候不允许同时更新元数据。

问题二、MaxCompute中执行SQL报错ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: java.lang.RuntimeException: com.aliyun.odps.lot.cbo.FailFastException: instance count exceeds limit 99999.
单作业需要的并发超过最大限制,可通过调整split size降低并发量来解决。可以设置一下set设置,set odps.sql.mapper.split.size=512 ,调整每个Mapper读取table数据的大小,单位是MB。

问题三、在DataWorks表管理中添加的表,修改字段名称报错。
可以使用DDL语句ALTER TABLE 修改。可以参考文档:
https://help.aliyun.com/document_detail/73771.html

问题四、MaxCompute可以指定列进行 insert overwrite吗?
insert overwrite 不支持指定插入列的功能,可以用insert into或者设计一张拉链表。可以参考这篇文章:
https://developer.aliyun.com/article/542146

问题五、MaxCompute中,按照分区查询数据的语法是什么?
select *from table where dt='1'; 可以参考文档:
https://help.aliyun.com/document_detail/73777.html

问题六、MaxCompute SQL task 能执行语法检查吗?
可以执行一下explian,参考官方文档:
https://help.aliyun.com/document_detail/73787.html

问题七、使用Tunnel 可以下载某个分区的数据吗?
可以,参考一下Tunnel 命令说明文档:https://help.aliyun.com/document_detail/27833.html

问题八、不同工作空间的表是否可以相互引用?
可以,授权就可以。可以参考一下文档:https://help.aliyun.com/document_detail/27935.html

问题九、请问MaxCompute表字段string类型的数据长度大于8MB怎么解决?
有两个方法:1、拆分字段。2、使用独享资源组,再提工单绑定可以解决大于8MB问题。

问题十、字段为空字符串的怎么在SQL里面过滤掉?
1605684405687-ee2fae0a-ef7f-472e-9eaf-215acd014d00.png
可以使用uid!='';

问题十一、PyODPS 操作 SQL 的示例代码有获取记录数的操作,放到 MaxCompute 中运行的就提示没有 count 属性了,怎么解决?
Dataworks上默认未开启Instance Tunnel,即instance.open_reader默认使用Result接口,最多可以获取一万条记录。开启Instance Tunnel后,可以通过reader.count获取记录数。

问题十二、MaxCompute中,CAST(substr(sdk_channel,1,1) AS BIGINT) = 1 或 CAST(t.is_client AS BIGINT) = 1 报错: Illegal type cast - in function cast, value 'n' cannot be casted from String to Bigint
substr 是对字符串截取 (),该函数里面的 两个参数 是 下标和截取个数,代码截的是 string类型,外面的 cast 函数是对类型进行转换,如果里面截出来的例如:abc,根本无法转换成 bigint,如果截出来是数字 123 是可以的 转成 bigint的。 例如:select cast(substr("1234",1,1) as BIGINT );

更多关于大数据计算产品技术交流,可扫码加入 “MaxCompute开发者社区” 钉钉群
2群.jpg

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里巴巴大数据计算
使用钉钉扫一扫加入圈子
+ 订阅

阿里大数据官方技术圈

官方博客
链接