电商运营干活分享,短视频运营,抖音运营,淘宝运营方案思路分析!

阿里云的MaxCompute有哪些使用限制?

跨境电商运营 dianshang 2℃ 0评论

阿里云的MaxCompute有哪些使用限制?

数据上传下载限制

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

    Tunnel Upload命令上传限制

      Tunnel命令不支持上传下载ARRAY、MAP和STRUCT类型的数据。

      上传没有速度限制,上传速度的瓶颈为网络带宽以及服务器性能。

      重传有次数的限制,当重传次数超过限制,就会继续上传下一个Block。上传完成后,可以通过select count(*) from table_name语句,检查数据是否有丢失。

      一个项目下Tunnel支持并发的连接数默认上限为2000个。

      每个Tunnel的Session在服务端的生命周期为24小时,创建后24小时内均可使用,也可以跨进程/线程共享使用,但是必须保证同一个BlockId没有重复使用。

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

      DataHub上传数据限制

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

        说明STRING的长度不能超过8 MB。

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

        TableTunnel SDK接口限制

          BlockId的取值范围是[0, 20000),单个Block上传的数据限制为100 GB。

          Session的超时时间为24小时。大批量数据传送导致超过24小时,需要自行拆分成多个Session。

          RecordWriter对应的HTTP Request超时时间为120s。如果120s内HTTP连接上没有数据流过,服务端会主动关闭连接。

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函数不能为ABSTRACT或STATIC。最多查询分区个数10000个数量限制最多查询分区个数不能超过10000个。SQL执行计划长度1 MB长度限制MaxCompute SQL生成的执行计划不能超过1 MB,否则会触发FAILED: ODPS-0010000:System internal error – The Size of Plan is too large报错。MapReduce限制

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

边界名 边界值 分类 配置项名称 默认值 是否可配置 说明

Instance内存占用[256 MB,12 GB]内存限制odps.stage.mapper(reducer).mem和odps.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.timeout600是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新类型。

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结构实现相关功能。

      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沙箱。

https://ds.fanyaozu.com/tag/%e8%a7%a3%e6%9e%90%e5%a4%9a%e7%82%b9-%e8%b6%85%e5%b8%82%e5%bf%ab%e9%80%81%e5%8d%95%e5%ba%97%e8%b5%8b%e8%83%bd%e6%a8%a1%e5%bc%8f%e8%83%bd%e8%b5%b0%e9%80%9a%e5%90%97

转载请注明:电商实战教程 » 阿里云的MaxCompute有哪些使用限制?

喜欢 (0)

文章评论已关闭!