本文为您介绍如何对按量计费的计算任务的消费进行限制。
功能介绍
MaxCompute按量计费资源为弹性伸缩资源,按需求为计算任务提供资源,对资源使用无限制。因此,您需要监控计算任务的消费情况,以免超出预期。
MaxCompute提供单SQL消费限制监控方式,支持在执行SQL语句前预估SQL语句的消费。当预估消费超出设定的阈值时,SQL语句执行受限,系统返回失败状态并给出失败信息。您可以通过此功能预防单个SQL语句产生高额费用。
单SQL消费限制
单SQL消费限制支持如下两种设置方式:
- Project级别设置。需要由Project Owner或者拥有Super_Administrator角色的用户执行如下命令开启或撤销单SQL消费限制,设置后,该Project发起的可预估的SQL作业都会收到影响。
--开启单SQL消费限制。 setproject odps.sql.metering.value.max=<m_value>; --撤销单SQL消费限制。 setproject odps.sql.metering.value.max;
- Session级别设置。将如下命令和SQL语句一起提交执行即可开启单SQL消费限制,SQL语句前不添加该命令则表示撤销单SQL消费限制。只对本次执行有效。
set odps.sql.metering.value.max=<m_value>;
SQL读取量(GB)×SQL复杂度
的值,并非消费金额。说明 Project的单SQL消费受m_value限制。如果某个SQL的预估消费超过m_value,该SQL执行受限。有些SQL目前无法预估(如执行外部表的SQL),则此功能无法对这类SQL生效。
在实际操作中,建议您:
- 根据项目中历史SQL消费以及您的预期消费设定Project级别的m_value。
您可以下载每天的详细计量信息,以Project为粒度,计算SQL任务(数据分类为ComputationSql的任务)的计算消耗量(即
SQL读取量(GB)×SQL复杂度
),并根据每日正常消耗的最高值,结合业务波动确定一个合适的值。您还可以将计算消耗换算成费用,再结合业务情况,确定一个合适的金额后换算成消耗量。
- 先设置Project级别的消费限制,然后针对某些特殊的SQL单独设置Session级别的m_value限制。 说明
- 设置Session级别的消费限制前,请您务必确认相应的SQL确实需要Session级别的限制,避免滥用该功能。
- 如果同时设置Project级别和Session级别的消费限制,则Session级别优先级高于Project级别。例如,Project级别设置m_value为100,而Project中某个SQL设置了Session级别的m_value为200,则该SQL执行前预估消费超过100不受限,超过200会受限。其他没有单独设置Session级别限制的SQL语句,会遵从Project级别的限制,预估消费超过100就会受限。
- 无论是设置Project级别还是Session级别的消费限制,都会影响任务的执行,建议您结合任务失败告警功能(例如DataWorks的智能监控)使用,及时感知任务失败并进行人工干预处理,以免关键任务被限制后影响业务。