好多同学在使用MaxCompute时,对产品的应用限制并不了解。这里,我们将给出MaxCompute产品的详细应用限制列表。如有遗漏,还请大家补充:
- 命名规范:原则上,项目(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重复读一个资源次数限制 <=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 < split_size <= (9223372036854775807 >> 20);
- Java沙箱限制请参考 这里;
了解更多信息,请加入MaxCompute产品钉钉咨询群:
时间: 2024-11-08 17:28:05