文档

使用限制

更新时间:

在使用MaxCompute前,建议您先了解产品相关使用限制,确保业务可顺利开展。本文为您介绍使用MaxCompute过程中的操作限制。

包年包月计算资源可购买额度限制说明

MaxCompute包年包月计算资源(单位:CU)默认最多可购买额度上限为2000 CU,若您希望购买超过2000 CU的计算资源,请您使用阿里云账号填写申请表单提交申请,MaxCompute产品工作人员会在三个工作日内审核您的提额申请,审核结果将以短信形式通知您。

按量付费标准版计算资源限制

为了避免单用户占用过多集群资源而导致其他用户无法发起作业的情况发生,MaxCompute限制了单用户、单地域可使用的按量付费标准版计算资源(单位:CU)上限,具体额度为下表所示。

国家或地区

地域(Region)

按量付费标准版计算资源CU上限

中国地区

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

2000

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

500

其他国家或地区

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

500

重要

以上CU上限值仅代表可获取的最大值,并非保障值,MaxCompute也可能会突破此限制以加快查询速度。

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

为了避免单用户占用过多集群资源而导致其他用户无法发起作业的情况发生,MaxCompute限制了单用户、单地域可使用的按量付费闲时版计算资源(单位:CU)上限,具体额度为下表所示。

国家或地区

地域(Region)

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

中国地区

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

2000

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

500

其他国家或地区

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

500

重要

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

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

MaxCompute包年包月数据传输服务并发(单位:Slot)默认最多可购买额度上限为500,若您希望购买超过500并发,请您提交工单申请。

数据传输服务(上传/下载)限制

在MaxCompute中上传下载数据时的使用限制如下:

  • 批量数据通道使用限制说明

    • 批量数据上传

      • UploadSession生命周期:24小时。

      • 单UploadSession写入分片(block)个数:20000个。

      • 单并发写入速度:10 MB/s。

      • 单分片(block)写入数据量:100 GB。

      • 单表创建UploadSession数:每5分钟500个。

      • 单表写入分片(block)数:每5分钟500个。

      • 单表并发提交UploadSession数:32个。

      • 并发写入分片(block)数:受数据传输服务并发(Slot)数限制,单次分片(block)写入占用一个数据传输服务并发(Slot)。

      • 当遇到并发写入时,MaxCompute会根据ACID进行并发写的保障。关于ACID的具体语义请参见ACID语义

    • 批量数据下载

      • DownloadSession生命周期:24小时。

      • InstanceDownloadSession生命周期:24小时,受实例生命周期限制。

      • 单Project创建InstanceDownloadSession数:每5分钟200个。

      • 单表创建DownloadSession数:每5分钟200个。

      • 单并发下载请求速度:10MB/s。

      • 并发创建DownloadSession数:受数据传输服务并发(Slot)数限制,单次创建DownloadSession至少占用一个数据传输服务并发(Slot)数。

      • 并发创建InstanceDownloadSession数:受数据传输服务并发(Slot)数限制,单次创建InstanceDownloadSession占用一个数据传输服务并发(Slot)数。

      • 并发下载请求数:受数据传输服务并发(Slot)数限制,单次数据下载请求占用一个数据传输并发(Slot)。

  • 流式数据通道使用限制说明

    • 单并发(Slot)写入速度:1MB/s。

    • 单并发(Slot)写入请求数:每秒10个。

    • 单表并发写入分区数:64个。

    • 单分区最大可用并发(Slot)数:32个。

    • StreamUploadSession占用并发(Slot)数:受数据传输服务并发(Slot)数限制,创建StreamUploadSession时指定数据传输服务并发(Slot)数。

  • DataHub上传数据限制

    • 每个字段的大小不能超过这个字段本身的限制,详情请参见数据类型版本说明

      说明

      STRING的长度不能超过8 MB。

    • 上传的过程中会将多条数据打包成一个Package进行上传。

更多数据上传下载信息,请参见数据上传下载

数据传输服务资源免费额度限制说明

下表数据为不同区域下免费共享资源(单位:Slot)Project级最多可用数据传输服务并发(Slot)数说明。

国家或地区

区域(Region)

数据传输服务并发(Slot)数

中国地区

华东1(杭州)

300

华东2(上海)

600

华东2金融云(上海)

50

华北2(北京)

300

华北2政务云(北京)

100

华北3(张家口)

300

华南1(深圳)

150

华南1金融云(深圳)

50

西南1(成都)

150

中国(香港)

50

其他国家或地区

新加坡

100

澳大利亚(悉尼)

50

马来西亚(吉隆坡)

50

印度尼西亚(雅加达)

50

日本(东京)

50

德国(法兰克福)

50

美国(硅谷)

100

美国(弗吉尼亚)

50

英国(伦敦)

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 ALL256个数量限制UNION ALL场景,最多允许合并256个表。
MAPJOIN128个数量限制MAPJOIN场景,最多允许连接128个小表。
MAPJOIN内存限制512 MB数量限制MAPJOIN场景,所有小表的内存不能超过512 MB。
ptinsubq1000行数量限制子查询中存在分区列时,子查询的返回结果不能超过1000行。
SQL语句长度 2 MB长度限制SQL语句的最大长度为2 MB。包括您使用SDK调用SQL的场景。
WHERE子句条件个数256个数量限制WHERE子句中的条件个数最大为256个。
列记录长度8 MB数量限制表中单个单元的最大长度为8 MB。
IN的参数个数1024数量限制IN的最大参数限制,例如in (1,2,3….,1024)。如果in(…)的参数过多,会影响编译性能。1024为建议值,不是限制值。
jobconf.json1 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报错。
单作业最大执行时间24小时运行时长限制默认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(张家口)、华南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

  • 本页导读 (1)
文档反馈