在使用MaxCompute前,建议您先了解产品相关使用限制,确保业务可顺利开展。本文为您介绍使用MaxCompute过程中的操作限制。
包年包月计算资源可购买额度限制说明
MaxCompute包年包月计算资源(单位:CU)默认最多可购买额度上限为2000 CU,若您希望购买超过2000 CU的计算资源,请您使用阿里云账号填写工单提交申请,MaxCompute产品工作人员会在三个工作日内审核您的提额申请,审核结果将以短信形式通知您。
按量付费标准版计算资源限制
为了避免单用户占用过多集群资源而导致其他用户无法发起作业的情况发生,MaxCompute限制了单用户、单地域可使用的按量付费标准版计算资源(单位:CU)上限,具体额度请参见下表。
国家或地区 | 地域(Region) | 按量付费标准版计算资源CU上限 |
中国地区 | 华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、华东2金融云(上海)、华北2政务云(北京)、华南1金融云(深圳) | 2000 |
西南1(成都)、中国(香港) | 500 | |
其他国家或地区 | 新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、日本(东京)、德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)、英国(伦敦)、阿联酋(迪拜) | 500 |
以上CU上限值仅代表可获取的最大值,并非保障值,MaxCompute也可能会突破此限制以加快查询速度。
包年包月数据传输服务并发可购买额度限制说明
MaxCompute包年包月数据传输服务并发(单位:Slot)默认最多可购买额度上限为500,若您希望购买超过500并发,请您提交工单申请。
数据传输服务(上传/下载)限制
在MaxCompute中上传下载数据时的使用限制请参见数据传输服务使用限制。
更多数据上传下载信息,请参见数据上传下载。
数据传输服务共享资源组说明
下表数据为不同区域下免费共享资源(单位:Slot)Project级最多可用Slot数说明。
站点 | 地域 | Slot(个数) |
中国 | 华东1(杭州) | 300 |
中国 | 华东2(上海) | 600 |
中国 | 华东2金融云(上海) | 50 |
中国 | 华北2(北京) | 300 |
中国 | 华北2政务云(北京) | 100 |
中国 | 华北3(张家口) | 300 |
中国 | 华北6(乌兰察布) | 300 |
中国 | 华南1(深圳) | 150 |
中国 | 华南1金融云(深圳) | 50 |
中国 | 西南1(成都) | 150 |
中国 | 中国(香港) | 50 |
亚太 | 新加坡(新加坡) | 100 |
亚太 | 马来西亚(吉隆坡) | 50 |
亚太 | 印度尼西亚(雅加达) | 50 |
亚太 | 日本(东京) | 50 |
欧洲与美洲 | 德国(法兰克福) | 50 |
欧洲与美洲 | 美国(硅谷) | 100 |
欧洲与美洲 | 美国(弗吉尼亚) | 50 |
欧洲与美洲 | 英国(伦敦) | 50 |
中东与印度 | 阿联酋(迪拜) | 50 |
SQL限制
在MaxCompute中开发SQL作业时的使用限制如下。
限制项 | 最大值/限制条件 | 分类 | 说明 |
表名长度 | 128字节 | 长度限制 | 表名、列名中不能有特殊字符,必须以字母开头,且只能使用英文小写字母(a-z)、英文大写字母(A-Z)、数字和下划线(_)。 |
注释长度 | 1024字节 | 长度限制 | 长度不超过1024字节的有效字符串。 |
表的列定义 | 1200个 | 数量限制 | 单表的列定义个数最多为1200个。 |
单表分区数 | 60000个 | 数量限制 | 单表的分区个数最多为60000个。 |
表的分区层级 | 6级 | 数量限制 | 在表中创建的分区层次不能超过6级。 |
屏显 | 10000行 | 数量限制 | SELECT语句屏显最多输出10000行。 |
| 256个 | 数量限制 |
|
| 256个 | 数量限制 |
|
| 128个 | 数量限制 |
|
| 512 MB | 数量限制 |
|
| 1000行 | 数量限制 | 子查询中存在分区列时,子查询的返回结果不能超过1000行。 |
SQL语句长度 | 2 MB | 长度限制 | SQL语句的最大长度为2 MB。包括您使用SDK调用SQL的场景。 |
列记录长度 | 8 MB | 数量限制 | 表中单个单元的最大长度为8 MB。 |
IN的参数个数 | 1024 | 数量限制 | IN的最大参数限制,例如 |
| 1 MB | 长度限制 |
|
视图 | 不可写 | 操作限制 | 视图不支持写入,不支持 |
列的数据类型 | 不可修改 | 操作限制 | 不允许修改列的数据类型及列位置。 |
Java UDF函数 | 不允许为 | 操作限制 | Java UDF函数不能为 |
最多查询分区个数 | 10000个 | 数量限制 | 最多查询分区个数不能超过10000个。 |
SQL执行计划长度 | 1 MB | 长度限制 | MaxCompute SQL生成的执行计划不能超过1 MB,否则会触发 |
单作业最大执行时间 | 72小时 | 运行时长限制 | 默认情况下,SQL单个作业的最长运行时间为24小时,可以通过下面的参数设置,将单个作业的最长运行时间增加到72小时。目前SQL作业不能超过72小时,超过后会自动停止运行。
|
更多SQL信息,请参见SQL。
MapReduce限制
在MaxCompute中开发MapReduce作业时的使用限制如下。
边界名 | 边界值 | 分类 | 配置项名称 | 默认值 | 是否可配置 | 说明 |
Instance内存占用 | [256 MB,12 GB] | 内存限制 | odps.stage.mapper(reducer).mem 和odps.stage.mapper(reducer).jvm.mem | 2048 MB+1024 MB | 是 | 单个Map Instance或Reduce Instance占用Memory,有框架Memory(默认2048 MB)和JVM的Heap Memory(默认1024 MB)两部分。 |
Resource数量 | 256个 | 数量限制 | - | 无 | 否 | 单个Job引用的Resource数量不超过256个,Table、Archive按照一个单位计算。 |
输入路数和输出路数 | 1024个和256个 | 数量限制 | - | 无 | 否 | 单个Job的输入路数不能超过1024(同一个表的一个分区算一路输入,总的不同表个数不能超过64个),单个Job的输出路数不能超过256。 |
Counter数量 | 64个 | 数量限制 | - | 无 | 否 | 单个Job中自定义Counter的数量不能超过64,Counter的Group Name和Counter Name中不能带有井号(#),两者长度和不能超过100。 |
Map Instance | [1,100000] | 数量限制 | odps.stage.mapper.num | 无 | 是 | 单个Job的Map Instance个数由框架根据Split Size计算得出,如果没有输入表,可以通过odps.stage.mapper.num直接设置,最终个数范围[1,100000]。 |
Reduce Instance | [0,2000] | 数量限制 | odps.stage.reducer.num | 无 | 是 | 单个Job默认Reduce Instance个数为Map Instance个数的1/4,用户设置作为最终的Reduce Instance个数,范围[0,2000]。可能出现这样的情形:Reduce处理的数据量会比Map大很多倍,导致Reduce阶段比较慢,而Reduce只能最多2000。 |
重试次数 | 3 | 数量限制 | - | 无 | 否 | 单个Map Instance或Reduce Instance失败重试次数为3,一些不可重试的异常会直接导致作业失败。 |
Local Debug模式 | Instance个数不超100 | 数量限制 | - | 无 | 否 | Local Debug模式下:
|
重复读取Resource次数 | 64次 | 数量限制 | - | 无 | 否 | 单个Map Instance或Reduce Instance重复读一个Resource次数限制<=64次。 |
Resource字节数 | 2 GB | 长度限制 | - | 无 | 否 | 单个Job引用的Resource总计字节数大小不超过2 GB。 |
Split Size | 大于等于1 | 长度限制 | odps.stage.mapper.split.size | 256 MB | 是 | 框架会参考设置的Split Size值来划分Map,决定Map的个数。 |
STRING列内容长度 | 8 MB | 长度限制 | - | 无 | 否 | MaxCompute表STRING列内容长度不允许超出限制。 |
Worker运行超时时间 | [1,3600] | 时间限制 | odps.function.timeout | 600 | 是 | Map或者Reduce Worker在无数据读写且没有通过context.progress() 主动发送心跳的情况下的超时时间,默认值是600s。 |
MapReduce引用Table资源支持的字段类型 | BIGINT、DOUBLE、STRING、DATETIME、BOOLEAN | 数据类型限制 | - | 无 | 否 | MapReduce任务引用表资源时,若表字段有其他类型字段执行报错。 |
MapReduce是否支持读取OSS数据 | - | 功能限制 | - | 无 | 否 | MapReduce不支持读取OSS数据。 |
MapReduce是否支持MaxCompute 2.0新类型 | - | 功能限制 | - | 无 | 否 | MapReduce不支持MaxCompute 2.0新类型。 |
更多MapReduce信息,请参见MapReduce。
PyODPS限制
在MaxCompute中基于DataWorks开发PyODPS作业时的使用限制如下:
PyODPS节点获取本地处理的数据不能超过50 MB,节点运行时占用内存不能超过1 GB,否则节点任务会被系统中止。请避免在PyODPS任务中添加额外的Python数据处理代码。
在DataWorks上编写代码并进行调试效率较低,为提升运行效率,建议本地安装IDE进行代码开发。
在DataWorks上使用PyODPS时,为了防止对DataWorks的Gate Way造成压力,对内存和CPU都有限制,该限制由DataWorks统一管理。如果您发现有Got killed报错,即表明内存使用超限,进程被中止。因此,请尽量避免本地的数据操作。通过PyODPS发起的SQL和DataFrame任务(除to_pandas外)不受此限制。
由于缺少matplotlib等包,如下功能可能受限:
DataFrame的plot函数。
DataFrame自定义函数需要提交到MaxCompute执行。由于Python沙箱限制,第三方库只支持所有的纯粹Python库以及Numpy,因此不能直接使用Pandas。
DataWorks中执行的非自定义函数代码可以使用平台预装的Numpy和Pandas。不支持其他带有二进制代码的第三方包。
由于兼容性原因,在DataWorks中,options.tunnel.use_instance_tunnel默认设置为False。如果需要全局开启instance tunnel,需要手动将该值设置为True。
由于实现的原因,Python的atexit包不被支持,请使用try-finally结构实现相关功能。
更多PyODPS信息,请参见PyODPS。
Graph限制
在MaxCompute中开发Graph作业时的使用限制如下:
单个Job引用的Resource数量不超过256个,Table、Archive按照一个单位计算。
单个Job引用的Resource总计字节数大小不超过512 MB。
单个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 MB,范围为[256 MB,12 GB]。
单个Worker重复读一个Resource次数限制不大于64次。
split_size
默认为64 MB,您可自行设置,范围为0<split_size
≤(9223372036854775807>>20)。MaxCompute Graph程序中的GraphLoader、Vertex、Aggregator等在集群运行时,受到Java沙箱的限制(Graph作业的主程序则不受此限制),具体限制请参见Java沙箱。
更多Graph信息,请参见Graph。
其他限制
各地域下的单个MaxCompute项目支持同时提交的作业数量限制如下。
地域 | 单个MaxCompute项目作业并发上限 |
华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、西南1(成都) | 2500 |
中国香港、新加坡、澳大利亚(悉尼)关停中、马来西亚(吉隆坡)、印度尼西亚(雅加达)、日本(东京)、德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)、英国(伦敦)、阿联酋(迪拜) | 300 |
如果MaxCompute项目提交的作业已经达到上限,继续提交作业会返回报错。错误信息示例:com.aliyun.odps.OdpsException: Request rejected by flow control. You have exceeded the limit for the number of tasks you can run concurrently in this project. Please try later
。