本文介绍数据投递的稳定性和使用限制。
MaxCompute投递(新版)
稳定性
- 读日志服务
稳定项 说明 可用性 可用性较高。 如果日志服务出错,无法读取数据,MaxCompute投递作业会在内部至少重试10次。如果仍然失败,作业执行会报错,然后作业重启。
- 写MaxCompute
稳定项 说明 并发度 按照日志服务Shard进行分区并创建投递实例,支持快速扩容。 如果日志服务源Logstore进行Shard分裂,可以在数秒以内完成投递实例的扩容,加快数据导出速度。
数据不丢失 MaxCompute投递作业基于消费组进行扩展,提供一致性保证。投递完成后,才会提交offset,因此可以保证数据写入MaxCompute之前,offset不被提交,即保证投递数据不丢失。 Schema变更 如果投递过程中在MaxCompute表中添加了新列,则新列只会被写入新分区,不会被写入旧分区以及当前分区。 - 处理脏数据
错误项 是否计入失败条数 说明 分区错误 是 常见场景为分区不合法或分区列不存在。该条数据不会写入MaxCompute。 数据列不合法 否 常见场景类型为不匹配或者类型转换失败。该列数据不会写入MaxCompute,其余列正常写入MaxCompute。 数据列过长 否 常见场景为数据超出string类型或者varchar长度限制。该列数据经过截断后写入MaxCompute,其余列正常写入MaxCompute。 - 监控告警
稳定项 说明 监控告警 数据投递有完善的监控,可实时追踪投递作业的延迟、流量等指标。您可以根据业务需求,配置自定义告警,及时发现投递问题(例如导出实例不足、网络Quota限制等)。具体操作,请参见为MaxCompute投递作业(新版)设置告警。 - 重启作业
稳定项 说明 分区数过多 作业重启时,因为分区数过多(5分钟仍未完成写入),可能导致数据重复。 数据写入失败 作业重启且数据写入MaxCompute失败(授权错误、网络错误)时,可能导致数据部分重复。
使用限制
- 网络
限制项 说明 同地域投递的网络 同地域投递时,数据通过阿里云内网传输,因此网络稳定性和速度更有保障。 跨地域投递的网络 跨地域投递时,数据通过公网传输,因此网络稳定性和速度没有保障。 网络出现问题时,内部会重试至少10次,如果仍然失败,作业执行会报错,导致作业重启。
- 读流量
限制项 说明 读流量 单个Project以及单个Shard存在最高流量限制。更多信息,请参见数据读写。 如果超过最高流量限制,请分裂Shard或者申请扩容Project读流量限制。超过限制,会导致MaxCompute投递作业读取数据失败,并在内部至少重试10次,如果仍然失败,作业执行会报错,然后作业重启。
- 写MaxCompute
限制项 说明 并发实例 支持最大的导出并发实例为64。 如果日志服务Shard数量超过64,则会合并多个Shard到一个实例中进行导出处理,并且尽量保证每个实例中的Shard数相同。
写入阈值 MaxCompute单分区写入上限为10 MB/s。 超过限制时,写数据到MaxCompute会不稳定。
禁止修改数据 MaxCompute投递(新版)使用了MaxCompute流式写入。在流式写入数据到MaxCompute期间,MaxCompute流式数据通道服务会禁止写入的表有更新、删除、插入等数据修改操作。更多信息,请参见流式数据通道概述。 由于禁止修改数据的限制,MaxCompute投递(新版)和MaxCompute投递(旧版)不能同时向同一张MaxCompute表写数据。
不支持写入特殊表 不支持写数据到MaxCompute的External表、Transactional表和Clustered表。 - 权限管理
限制项 说明 写授权 MaxCompute写授权支持RAM用户以及RAM角色两种方式,并且需要在MaxCompute侧进行单独操作。 - 数据类型
- 普通列
类型 示例 说明 string "hello" 最大长度为8 MB。 datetime "2021-12-22 05:00:00.123456" 日志服务中的数据需满足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分区列的格式要求。
- 普通列