本文为您介绍MaxCompute的计算计费方式。

说明 当实例欠费后有停机风险,系统会提醒或通知您,请及时续费,避免对您的服务造成影响。如果还有其他问题,请提交工单咨询。
MaxCompute有以下两种计算计费方式:
  • 按量计费方式。即以作业的消耗作为计量指标,在作业执行后收取费用。按量计费分为SQL标准计费、SQL外表计费、MapReduce计费、Spark计费四种计费方式。
  • 包年包月方式。即您提前预定一部分资源。

目前MaxCompute开放的计算任务类型有SQL、UDF、MapReduce、Graph及机器学习作业。其中SQL(不包括UDF)计算任务已经收费,MapReduce任务在2017年12月19日启动收费。其它类型暂无收费计划。

包年包月

您可以预先购买一部分资源,MaxCompute会预留您所购买的资源。此种资源的基本单位定义为CU(Compute Unit)。1 CU包含的计算资源为4 GB内存加上1核CPU。包年包月计算资源包括SQL、MapReduce、Spark等类型任务计算所需资源。
资源定义 内存 CPU 售价USD/month
1 CU 4 GB 1 CPU 22.0

当购买包年包月的计算资源后,您可以通过MaxCompute管家进行资源监控管理,详情请参见MaxCompute管家

建议新用户先采用按I/O后付费方式进行结算。初期使用MaxCompute 时,消耗的资源较少,采购CU预留资源会出现资源闲置。相对而言,按I/O后付费方式成本会更低。

SQL标准计费

SQL任务按量计费,即SQL按I/O后付费。您每执行一条SQL作业,MaxCompute将根据该作业的输入数据量及该SQL的复杂度进行计费。

MaxCompute SQL任务的按I/O后付费会针对每个作业产生一次计量。当天的所有计量信息将在第二天做一次性汇总收费。

SQL计算任务的计费公式如下所示。
一次SQL计算费用 = 计算输入数据量 * SQL复杂度 * SQL价格
SQL标准计费的单价如下。
计费项 价格
SQL价格 0.0438 USD/GB
  • 计算输入数据量:指一条SQL语句实际扫描的数据量,大部分的SQL语句有分区过滤和列裁剪,所以一般情况下这个值会远小于源表数据的大小。
    • 列裁剪:例如您提交的SQL是select f1,f2,f3 from t1; 只计算t1表中f1,f2,f3三列的数据量,其他列不会参与计费。
    • 分区过滤:例如SQL语句中含有where ds>”20130101”,ds是分区列,则计费的数据量只会包括实际读取的分区,不会包括其他分区的数据。
  • SQL复杂度:先统计SQL语句中的关键字,再折算为SQL复杂度,详情如下:
    • SQL关键字个数 = Join个数 + Group By个数 + Order By个数 + Distinct个数 + 窗口函数个数 + max(insert into个数-1, 1)。
    • SQL复杂度计算:
      • SQL关键字个数小于等于3,复杂度为1。
      • SQL关键字个数小于等于6,且大于等于4,复杂度为1.5。
      • SQL关键字个数小于等于19,且大于等于7,复杂度为2。
      • SQL关键字个数大于等于20,复杂度为4。
复杂度计量命令格式如下。
cost sql <SQL Sentence>;
示例如下。
odps@ $odps_project >cost sql SELECT DISTINCT total1 FROM
(SELECT id1, COUNT(f1) AS total1 FROM in1 GROUP BY id1) tmp1
ORDER BY total1 DESC LIMIT 100;
Intput:1825361100.8 Bytes
Complexity:1.5
示例中SQL关键字个数是4(该语句中有一个DISTINCT,一个COUNT,一个GROUP BY,一个ORDER),而SQL复杂度是1.5,数据量约为1.7 GB,则实际消费如下。
1.7 * 1.5 * 0.0438 = 0.11 USD
说明
  • 账单出账时间在第二天06:00前。在计算任务成功结束后,系统会统计该计算任务读取的数据量和SQL复杂度,账单生成后会自动扣除费用以结算账单。没有成功的计算任务不扣费。
  • 与存储类似,SQL计算也以压缩后的数据大小计费。

SQL外表计费

从2019年03月开始,MaxCompute SQL外部表功能开始计费,采用的计费标准为如下。
一次SQL计算费用=计算输入数据量*SQL价格
SQL外表的单价如下。
计费项 价格
SQL价格 0.0044 USD/GB
SQL价格是0.0044 USD/GB/复杂度 ,复杂度系数为1。当天的所有计量信息在第二天做一次性汇总收费,并直接体现在您的账户账单中。
说明
  • 当您需要内外表混合作业的时候,会分别计费。
  • 外部表参与计算的SQL不支持费用预估。

MapReduce按量计费

2017年12月19日MaxCompute开始对MapReduce任务进行计费。MaxCompute MapReduce采用的计费标准如下所示。
MR任务当日计算费用=当日总计算时*单价(USD)
单价如下。
计费项 价格
MR价格 0.0690 USD/Hour/Task
MapReduce任务计算时的计算公式如下。
一个MR任务一次执行成功的计算时 = 任务运行时间(小时)* 任务调用的Core数量。

例如,一个MR任务一次执行成功是调用了100Core并花费0.5小时,那么本次执行的计算时为:0.5小时 * 100 Core = 50个计算时。

MR计算任务成功结束后,系统会统计该计算任务所消耗的计算时,当天所有计量信息将在第二天做一次性汇总收费,生成账单,直接体现在账号账单中,并自动扣除费用以结算账单。
说明
  • 没有执行成功的计算任务不扣费。
  • 任务排队时间不计入计量计时。
  • 如果您购买了MaxCompute包年包月服务,则在您购买的服务范围内您可以免费使用MR计算任务,不会额外支付费用。

Spark按量计费

2019年7月24日起,MaxCompute开始正式对Spark任务进行计费。MaxCompute Spark采用的计费标准如下。
Spark任务当日计算费用 = 当日总计算时 * 单价(0.1041 USD/Hour/Task)
Spark任务计算时的计算方式如下。
Spark任务计算时=Max(CPU * 时长,向上取整(内存 * 时长/4))
其中:
  • 需要您提供计算消耗的CPU Core数量、运行的时长以及内存量。
  • 1个计算时的单位为1 CPU Core+4 GB内存。

例如,您使用了2 Core,5 GB运行1 小时,计算时为Max(2*1,向上取整(5*1/4))=2计算时。如果您使用了2 Core,10 GB运行1小时,计算时为Max(2*1, 向上取整(10*1/4))=3计算时。

Spark计算任务结束后,系统会统计该计算任务所消耗的计算时。当天所有计量信息将在第二天做一次性汇总收费,生成账单,直接体现在账号账单中,并自动从账号余额中扣除费用以结算账单。
说明
  • 任务排队时间不计入计量计时。
  • 相同作业会受根据提交作业时用户所指定资源大小的不同会产生费用波动。
  • 如果您购买了MaxCompute包年包月服务,则在您购买的服务范围内您可以免费使用Spark计算任务,不会额外支付费用。
  • 如果您对Spark计算任务收费有疑惑,可提工单咨询。