MaxCompute产品使用限制

更新时间:
复制为 MD 格式

本文介绍使用MaxCompute过程中的操作限制。

在使用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

中国

华东1金融云(杭州)

50

中国

华东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)、数字和下划线(_)。

列名长度

128字节

长度限制

  • 列名大小写不敏感,不能有特殊字符,只能包含a~z、A~Z、数字、下划线(_)或中文。建议以字母开头,列名长度限制为不超过128字节,否则报错。

  • 执行SET odps.sql.bigquery.compatible=true;命令开启BigQuery兼容模式时,列名长度限制为不超过256字节,否则报错。

注释长度

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(partition in subquery)

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;

表分区创建频率

120次/15

频率限制

表分区创建ALTER TABLE <table_name> ADD PARTITION <pt_spec>的操作频率限制为120次/15秒。

更多SQL信息,请参见SQL

MapReduce限制

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

边界名

边界值

分类

配置项名称

默认值

是否可配置

说明

Instance内存占用

[256 MB,12 GB]

内存限制

odps.stage.mapper(reducer).memodps.stage.mapper(reducer).jvm.mem

2048 MB+1024 MB

单个Map InstanceReduce Instance占用Memory,有框架Memory(默认2048 MB)和JVMHeap Memory(默认1024 MB)两部分。

Resource数量

256

数量限制

-

单个Job引用的Resource数量不超过256个,Table、Archive按照一个单位计算。

输入路数和输出路数

1024个和256

数量限制

-

单个Job的输入路数不能超过1024(同一个表的一个分区算一路输入,总的不同表个数不能超过64个),单个Job的输出路数不能超过256。

Counter数量

64

数量限制

-

单个Job中自定义Counter的数量不能超过64,CounterGroup NameCounter Name中不能带有井号(#),两者长度和不能超过100。

Map Instance

[1,100000]

数量限制

odps.stage.mapper.num

单个JobMap 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 InstanceReduce Instance失败重试次数为3,一些不可重试的异常会直接导致作业失败。

Local Debug模式

Instance个数不超100

数量限制

-

Local Debug模式下:

  • 默认Map Instance个数为2,不能超过100。

  • 默认Reduce Instance个数为1,不能超过100。

  • 默认一路输入下载记录数100,不能超过10000。

重复读取Resource次数

64

数量限制

-

单个Map InstanceReduce 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

长度限制

-

MaxComputeSTRING列内容长度不允许超出限制。

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时,为了防止对DataWorksGate Way造成压力,对内存和CPU都有限制,该限制由DataWorks统一管理。如果您发现有Got killed报错,即表明内存使用超限,进程被中止。因此,请尽量避免本地的数据操作。通过PyODPS发起的SQLDataFrame任务(除to_pandas外)不受此限制。

  • 由于缺少matplotlib等包,如下功能可能受限:

    • DataFrameplot函数。

    • DataFrame自定义函数需要提交到MaxCompute执行。由于Python沙箱限制,第三方库只支持所有的纯粹Python库以及Numpy,因此不能直接使用Pandas。

    • DataWorks中执行的非自定义函数代码可以使用平台预装的NumpyPandas。不支持其他带有二进制代码的第三方包。

  • 由于兼容性原因,在DataWorks中,options.tunnel.use_instance_tunnel默认设置为False。如果需要全局开启instance tunnel,需要手动将该值设置为True。

  • 由于实现的原因,Pythonatexit包不被支持,请使用try-finally结构实现相关功能。

更多PyODPS信息,请参见PyODPS

提交作业数量限制

各地域下的单个MaxCompute项目支持同时提交的作业数量限制如下。

地域

单个MaxCompute项目作业并发上限

华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、西南1(成都)

2500

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

1000

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

1000

如果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