MaxCompute投递(新版)

本文介绍MaxCompute投递(新版)的稳定性和使用限制。

稳定性说明

日志服务

稳定项

说明

可用性

可用性较高。

如果日志服务出错,无法读取数据,MaxCompute投递任务会在内部至少重试10次。如果仍然失败,任务执行会报错,然后任务重启。

写MaxCompute

稳定项

说明

并发度

按照日志服务Shard进行分区并创建投递实例,支持快速扩容。

如果日志服务源Logstore进行Shard分裂,可以在数秒以内完成投递实例的扩容,加快数据导出速度。

数据不丢失

MaxCompute投递任务基于消费组进行扩展,提供一致性保证。投递完成后,才会提交offset,因此可以保证数据写入MaxCompute之前,offset不被提交,即保证投递数据不丢失。

Schema变更

如果投递过程中在MaxCompute表中添加了新列,则新列只会被写入新分区,不会被写入旧分区以及当前分区。

处理脏数据

错误项

是否计入失败条数

说明

分区错误

常见场景为分区不合法或分区列不存在。该条数据不会写入MaxCompute。

数据列不合法

常见场景类型为不匹配或者类型转换失败。该列数据不会写入MaxCompute,其余列正常写入MaxCompute。

数据列过长

常见场景为数据超出string类型或者varchar长度限制。该列数据经过截断后写入MaxCompute,其余列正常写入MaxCompute。

监控告警

稳定项

说明

监控告警

数据投递有完善的监控,可实时追踪投递任务的延迟、流量等指标。您可以根据业务需求,配置自定义告警,及时发现投递问题(例如导出实例不足、网络Quota限制等)。具体操作,请参见为MaxCompute投递任务(新版)设置告警

重启任务

稳定项

说明

分区数过多

任务重启时,因为分区数过多(5分钟仍未完成写入),可能导致数据重复。

数据写入失败

任务重启且数据写入MaxCompute失败(授权错误、网络错误)时,可能导致数据部分重复。

使用限制

网络

限制项

说明

同地域投递的网络

同地域投递时,数据通过阿里云内网传输,因此网络稳定性和速度更有保障。

读流量

限制项

说明

读流量

单个Project以及单个Shard存在最高流量限制。更多信息,请参见数据读写

如果超过最高流量限制,请分裂Shard或者申请扩容Project读流量限制。超过限制,会导致MaxCompute投递任务读取数据失败,并在内部至少重试10次,如果仍然失败,任务执行会报错,然后任务重启。

写MaxCompute

限制项

说明

并发实例

支持最大的导出并发实例为64。

如果日志服务Shard数量超过64,则会合并多个Shard到一个实例中进行导出处理,并且尽量保证每个实例中的Shard数相同。

写入阈值

  • MaxCompute单分区写入上限为10 MB/s。

  • 各个地域的MaxCompute单项目写入上限略不相同。例如华东1(杭州)的上限为1MB/s×300=300 MB/s。公式说明如下:

重要

超过MaxCompute写入限制,写数据到MaxCompute会不稳定,且会触发MaxCompute侧的流控,导致FlowExceeded或者SlotExceed错误,请联系MaxCompute值班人员解决。

禁止修改数据

MaxCompute投递(新版)使用了MaxCompute流式写入。在流式写入数据到MaxCompute期间,MaxCompute流式数据通道服务会禁止写入的表有更新、删除、插入等数据修改操作。更多信息,请参见流式数据通道概述

由于禁止修改数据的限制,MaxCompute投递(新版)和MaxCompute投递(旧版)不能同时向同一张MaxCompute表写数据。

不支持写入特殊表

不支持写数据到MaxCompute的External表、Transactional表和Clustered表。

表Schema变更

如果您的MaxCompute表Schema有变更,您需要先暂停MaxCompute投递20分钟,再重新启动,使表Schema变更生效。

权限管理

限制项

说明

写授权

MaxCompute写授权支持RAM用户以及RAM角色两种方式,并且需要在MaxCompute侧进行单独操作。

数据类型

  • 普通列

    类型

    示例

    说明

    string

    "hello"

    最大长度为8 MB。

    datetime

    "2021-12-22 05:00:00"

    日志服务中的数据需满足MaxCompute的数据格式要求。

    date

    "2021-12-22"

    日志服务中的数据需满足MaxCompute的数据格式要求。

    timestamp

    1648544867

    毫秒级或秒级精度。

    decimal

    1.2

    日志服务中的数据需满足MaxCompute的数据格式要求。

    char

    "hello"

    最大长度为255字节。

    varchar

    "hello"

    最大长度为65535字节。

    binary

    "hello"

    最大长度为8 MB。

    bigint

    123

    最大支持int64。

    boolean

    1

    • 1 、t、T、true、TRUE、True解析为True。

    • 0、f、F、false、FALSE、False解析为False。

    double

    1.2

    最大支持64位浮点数。

    float

    1.2

    最大支持32位浮点数。

    integer

    123

    最大支持int32。

    smallint

    12

    最大支持int16。

    tinyint

    12

    最大支持int8。

  • 分区列

    限制项

    说明

    分区列

    按照字符串处理,需要满足MaxCompute分区列的格式要求。

管理投递

限制项

说明

暂停投递任务

投递任务会记录上次投递的日志Cursor,恢复运行时从记录的Cursor开始继续投递。因此暂停投递任务时存在如下机制。

  • 暂停任务一段时间且没有超过数据的保存时间,则再运行任务时,系统从上次暂停的位置继续开始投递,不会丢失数据。

  • 暂停任务一段时间但超过了数据的保存时间,则再运行任务时,系统从离上次暂停位置最近的一条数据开始投递。

MaxCompute IP白名单

限制项

说明

在MaxCompute项目管理中开启白名单(例如开启经典网络IP白名单),可能导致MaxCompute投递失败

可以在MaxCompute侧执行命令解决白名单导致的MaxCompute投递失败问题。

setproject odps.security.ip.whitelist.services=AliyunLogSLRService,AliyunLogDefaultService;
  1. 通过setproject查询当前白名单配置。

  2. 根据已有配置,构建setproject odps.security.ip.whitelist.services;命令,在已有服务白名单后面添加AliyunLogSLRService,AliyunLogDefaultService

  3. 配置结束之后通过setproject检查配置。