阿里云平台MaxCompute的表分区数有60000个的限制,如果达到这个上限,MaxCompute的表便无法新增分区,线上任务会执行失败。
解决方案可以通过程序自动监控项目空间中表对应的分区数,如果接近上限就进行报警。
- 如果用阿里云的DataWorks平台的自带功能,可以通过“数据质量”模块监控分区统计结果数,如果大于预警值则进行报警。
- 如果是通过手动写代码的方式,可以自定义Python或者其他脚本,通过程序判断表的分区数,如果大于预警值则进行报警。
查询MaxCompute表对应分区数SQL如下:
-- 查询项目分区元数据信息 SELECt * FROM Information_Schema.partitions; -- 查看表对应分区数量 SELECt table_name,COUNT(partition_name) AS partition_num FROM Information_Schema.partitions WHERe table_schema='project_name' GROUP BY table_name;统计接近上线的分区
-- 查询分区数大于55000的的表 SELECt table_name,COUNT(partition_name) AS partition_num FROM Information_Schema.partitions WHERe table_schema='project_name' GROUP BY table_name HAVINg COUNT(partition_name) > 55000;按分区归档数据
-- 按分区归档历史数据至备份表 INSERT OVERWRITE TABLE table_bak(partition_name) SELECt FIELD FROM table_name WHERe partition_name删除归档数据分区 -- 将归档后的数据分区删除 ALTER TABLE table_name DROP IF EXISTS PARTITION(partition_name



