天天看点

MaxCompute应用限制整理

好多同学在使用maxcompute时,对产品的应用限制并不了解。这里,我们将给出maxcompute产品的详细应用限制列表。如有遗漏,还请大家补充:

命名规范:<b>原则上</b>,项目(project),表(table),函数(function),资源(resource),分区(partition),列的名称都不能有特殊字符,只能用英文的a-z,a-z及数字和下划线_,且以字母开头,名称的长度不超过128字节。实际情况可能会略有不同,但我们仍然建议您遵循这个原则进行命名。

task并发度控制:通常情况下,maxcompute会在项目级别做task并发度控制,任意项目下,用户在同一时刻最多只能提交1000个task。对于graph及部分mpi类型的pai作业,最大只允许1000个进程的作业。

列限制:表string列内容长度不允许超过8mb;

sql:

多路输出限制:单个sql里最多可以写128路输出,超过128路报语法错误;

动态输出分区限制:任意动态分区sql不允许生成超过2000个动态分区,否则引发运行时异常;

select屏显限制:select屏显结果最多只有10000条输出;

order by语句后必须接limit;

sort by必须与distribute by配合使用;

最多允许128路union all,超过此限制报语法错误;

maxcompute 的join支持多路间接,但不支持笛卡尔积,即无on条件的链接;

maxcompute中的join连接条件,只允许and连接的等值条件,并且最多支持16路join操作。只有在mapjoin中,可以使用不等值连接或者使用or连接多个条件;

目前maxcompute 在mapjoin中最多支持指定6张小表,否则报语法错误;

如果使用mapjoin,则所有小表占用的内存总和不得超过512mb。请注意由于maxcompute 是压缩存储,因此小表在被加载到内存后,数据大小会急剧膨胀。此处的512mb限制是加载到内存后的空间大小;

多个表join时,最左边的两个表不能同时是mapjoin的表;

mapreduce限制:

单个任务引用的资源数量不超过512个,分区表按照一个单位计算。

单个任务引用的资源总计字节数大小不超过64mb。

单个任务的输入路数不能超过128,单个任务的输出路数不能超过128路。

单个任务中自定义counter的数量不能超过64。

单个map或reduce worker占用memory默认为2048mb,范围[256mb, 12gb]。

单个map或reduce worker重复读一个资源次数限制 &lt;=64次。

本地运行模式下,map worker个数不能超过100;reduce worker个数不能超过100;默认一路输入下载记录数100。

graph应用限制:

单个job引用的resource数量不超过256个,table、archive按照一个单位计算;

单个job引用的resource总计字节数大小不超过512m;

单个job的输入路数不能超过1024(输入表的个数不能超过64),单个job的输出路数不能超过256;

多路输出中指定的label不能为null或者为空字符串,长度不能超过256,只能包括a-z,a-z,0-9,_,#,.,-等;

单个job中自定义counter的数量不能超过64,counter的group name和counter name中不能带有#,两者长度和不能超过100;

单个job的worker数由框架计算得出,最大为 1000, 超过抛异常;

单个worker占用cpu默认为200,范围[50, 800];

单个worker占用memory默认为4096,范围[256m, 12g];

单个worker重复读一个resource次数限制不大于64次;

split size默认为64m,用户可设置,范围:0 &lt; split_size &lt;= (9223372036854775807 &gt;&gt; 20);

MaxCompute应用限制整理