刚刚顺利苟过了阿里ACP, 主要复习策略是多次熟悉阿里云提供大数据官方教程,官方文档,并对核心环境做总结。
社区关于复习提纲的内容以及比较详细了,这里梳理下存在关键细节的考点,也给大家一些参考。
关键数字:
- 单表分区层级最多6级。单表分区数最多允许60000个分区。一次查询最多查询分区数为10000个分区。
- MaxCompute支持上传的单个资源大小上限为500MB,
- 当使用Select语句屏显时,目前最多只能显示10000行结果
- 单个SQL中最多可以写256路输出,
- MaxCompute在MapJoin中最多支持指定8张小表,否则报语法错误。如果使用MapJoin,则所有小表占用的内存总和不得超过512MB。
- 名称的长度不超过128字节。一张表最多允许60000个分区,单表的分区层次不能超过6级。注释内容是长度不超过1024字节的有效字符串
- 表的最大列数为1200列。
sql语法:
Q:在 MaxCompute SQL 执行过程中,报错为Table xx has n columns, but query has m columns。
A:MaxCompute SQL 使用 INSERT INTO/OVERWRITE TABLE XXX SELECT 插入数据时,需要保证 SELECT查询出来的字段和插入的表的字段,包括顺序、字段类型都能匹配,当然总的字段数量上也要能对的上。
目前 MaxCompute 不支持指定插入表中某几个字段,其他字段为 NULL 或者其他默认值的情况,您可以在 SELECT 的时候设置成 NULL,例如:SELECT ‘a’,NULL FROM XX。
Q:用insert into…values...语句插入表记录报错,请问如何向 MaxCompute 表中插入记录?
A:向 MaxCompute 表中插入记录的操作步骤如下:
创建一个表, 例如 dual 表。语句如下:
createtabledual(cntbigint);
insertintotabledualselectcount(*) as cnt from dual;
执行完上述语句便生成了一张有 1 条记录的 dual 表。
执行下述语句,即可向 MaxCompute 表中插入记录。
insert into table xxxx select 1,2,3 from dual;
Q:用insert into partition时,如果分区不存在,如何操作
A: 用insert into partition时,如果分区不存在,如何会自动创建分区
- 分布式环境下,使用动态分区功能的SQL中,单个进程最多只能输出512个动态分区,否则会引发运行时异常。
- 动态生成的分区值不允许为NULL,也不支持含特殊字符和中文,否则会引发运行时异常FAILED: ODPS-0123031:Partition exception - invalid dynamic partition value: province=xxx。
- 如果目标表有多级分区,在运行INSERT语句时允许指定部分分区为静态,但是静态分区必须是高级分区
- MaxCompute 1.0在进行动态分区时,如果分区列的类型与对应SELECT列表中列的类型不严格一致,会发生报错。MaxCompute 2.0则支持隐式类型转换。