使用限制

在使用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限制了单用户、单地域可使用的按量付费闲时版计算资源(单位:CU)上限,具体额度为下表所示。

国家或地区

地域(Region)

按量付费闲时版计算资源CU上限

中国地区

华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、华东2金融云(上海)、华北2政务云(北京)、华南1金融云(深圳)

2000

西南1(成都)、中国(香港)

500

其他国家或地区

新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、日本(东京)、德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)、英国(伦敦)、阿联酋(迪拜)

500

重要

以上CU上限值仅代表可获取的最大值,并非保障值。

包年包月数据传输服务并发可购买额度限制说明

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行。

INSERT目标个数

256个

数量限制

MULTI-INSERT场景,目标表的数量限制为256个。

UNION ALL

256个

数量限制

UNION ALL场景,最多允许合并256个表。

MAPJOIN

128个

数量限制

MAPJOIN场景,最多允许连接128个小表。

MAPJOIN内存限制

512 MB

数量限制

MAPJOIN场景,所有小表的内存不能超过512 MB。

ptinsubq

1000行

数量限制

子查询中存在分区列时,子查询的返回结果不能超过1000行。

SQL语句长度

2 MB

长度限制

SQL语句的最大长度为2 MB。包括您使用SDK调用SQL的场景。

列记录长度

8 MB

数量限制

表中单个单元的最大长度为8 MB。

IN的参数个数

1024

数量限制

IN的最大参数限制,例如in (1,2,3….,1024)。如果in(…)的参数过多,会影响编译性能。1024为建议值,不是限制值。

jobconf.json

1 MB

长度限制

jobconf.json的大小为1 MB。当表包含的分区数量较多时,大小可能超过jobconf.json,超过1 MB。

视图

不可写

操作限制

视图不支持写入,不支持INSERT操作。

列的数据类型

不可修改

操作限制

不允许修改列的数据类型及列位置。

Java UDF函数

不允许为ABSTRACT或者STATIC

操作限制

Java UDF函数不能为ABSTRACTSTATIC

最多查询分区个数

10000个

数量限制

最多查询分区个数不能超过10000个。

SQL执行计划长度

1 MB

长度限制

MaxCompute SQL生成的执行计划不能超过1 MB,否则会触发FAILED: ODPS-0010000:System internal error - The Size of Plan is too large报错。

单作业最大执行时间

72小时

运行时长限制

默认情况下,SQL单个作业的最长运行时间为24小时,可以通过下面的参数设置,将单个作业的最长运行时间增加到72小时。目前SQL作业不能超过72小时,超过后会自动停止运行。

set odps.sql.job.max.time.hours=72;

更多SQL信息,请参见SQL

MapReduce限制

在MaxCompute中开发MapReduce作业时的使用限制如下。

边界名边界值分类配置项名称默认值是否可配置说明
Instance内存占用[256 MB,12 GB]内存限制odps.stage.mapper(reducer).memodps.stage.mapper(reducer).jvm.mem2048 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模式下:
  • 默认Map Instance个数为2,不能超过100。
  • 默认Reduce Instance个数为1,不能超过100。
  • 默认一路输入下载记录数100,不能超过10000。
重复读取Resource次数64次数量限制-单个Map Instance或Reduce Instance重复读一个Resource次数限制<=64次。
Resource字节数2 GB长度限制-单个Job引用的Resource总计字节数大小不超过2 GB。
Split Size大于等于1长度限制odps.stage.mapper.split.size256 MB框架会参考设置的Split Size值来划分Map,决定Map的个数。
STRING列内容长度8 MB长度限制-MaxCompute表STRING列内容长度不允许超出限制。
Worker运行超时时间[1,3600]时间限制odps.function.timeout600Map或者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 namecounter 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

华东2金融云(上海)、华南1金融云(深圳)

200

华北2政务云(北京)、中国香港、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、日本(东京)、德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)、英国(伦敦)、阿联酋(迪拜)

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