MaxCompute支持对SQL、MapReduce、Lightning(交互式分析)、Spark、Mars和MCQA(查询加速)作业按量计费。其中:SQL作业分为开发者版和标准版。

如果您担心按量计费项目的日消费过高,可以通过云监控配置消费监控告警。您可以按项目粒度配置每日消费总额上限告警,及时获取当日累计消费总额,以免消费超出预期。消费监控告警配置详情请参见监控报警

SQL作业按量计费

每执行一个SQL作业,MaxCompute会根据作业的输入数据量及SQL复杂度进行计费。系统将在第二天对所有执行成功的SQL作业一次性汇总计费,体现在账号账单中,并自动从账号余额中扣除费用。

不同类型SQL作业的计费公式如下。
类型 计费公式(单个SQL作业计算费用) 说明
使用开发者版MaxCompute服务的SQL作业 计算输入数据量×单价(0.15元/GB)
说明 开发者版每个项目每个月的计算费用优惠100元。
  • 计算输入数据量:指一个SQL作业实际扫描的数据量。大部分的SQL作业有分区过滤和列裁剪,所以通常该值会远小于源表数据大小。
    • 分区过滤:例如SQL语句中含有WHERE ds > 20130101ds是分区列,则计费的数据量仅包括实际读取的分区,不包括其他分区的数据。
    • 列裁剪:例如SQL语句SELECT f1,f2,f3 FROM t1;,只计算t1表中f1、f2和f3列的数据量,其他列不参与计费。
  • SQL复杂度:先统计SQL语句中的关键字,再折算为SQL复杂度,具体如下:
    • SQL关键字个数=JOIN个数+GROUP BY个数+ORDER BY个数+DISTINCT个数+窗口函数个数+MAX(INSERT个数-1, 1)
    • SQL复杂度计算:
      • SQL关键字个数小于等于3,复杂度为1。
      • SQL关键字个数小于等于6,且大于等于4,复杂度为1.5。
      • SQL关键字个数小于等于19,且大于等于7,复杂度为2。
      • SQL关键字个数大于等于20,复杂度为4。
    说明 如果SQL关键字个数远高于20,会导致解析消耗大量时间,且作业长期处于排队状态,建议您优化SQL,控制SQL关键字个数。
使用标准版MaxCompute服务的SQL作业 计算输入数据量×SQL复杂度×单价(0.3元/GB)
引用外部表的SQL作业 计算输入数据量×单价(0.03元/GB) 自2018年10月31日起,外部表开始计费,详情请参见外部表
  • 如果在MaxCompute下使用OTS和OSS相关服务,计费方式如下:
    • 执行SQL作业时,如果您通过外网、经典网络和VPC网络访问OTS(不包含STS方式访问),OTS会收取费用,详情请参见计量项和计费说明
    • 执行SQL作业时,如果您通过外网访问OSS会收取流量费用,通过经典网络或者VPC网络访问OSS不收取流量费用。如果调用OSS API,可能会额外产生费用,详情请参见计量项和计费项
  • 当您执行内外表混合SQL作业时,会分别计费。
复杂度计量命令格式如下。
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关键字的个数为:1个DISTINCT+1个GROUP BY+1个ORDER BY+MAX(0-1, 1)=4,SQL复杂度为1.5,数据量约为1.7 GB(对应账单为1.7 GB×1024³=1825361100.8 Byte),则实际计费为1.7×1.5×0.3=0.76元
说明
  • 账单在第二天06:00前出账。
  • 执行失败的SQL作业不计费。
  • 与存储类似,SQL作业以压缩后的数据量计费。
  • 账单和下载的数据记录中,数据量的单位是Byte,需要除以1024³换算为GB。

SQL费用预估

SQL费用预估方法如下:
  • 如果您使用DataWorks开发SQL,可以通过图形界面上的费用预估功能估算费用。预估费用
  • 在MaxCompute客户端(odpscmd)执行COST SQL命令估算费用,详情请参见COST SQL
  • 调用SQLCostTask SDK接口预估SQL费用。预估的费用不一定等于真实费用,真实费用以最终账单费用为准。
说明 不支持预估外部表参与计算的SQL作业费用。

MapReduce按量计费

自2017年8月16日起,MaxCompute正式开始对MapReduce作业按量计费。

MapReduce作业的计费公式为:
MapReduce作业当日计算费用=当日总计算时×单价(0.46元/计算时)
一个执行成功的MapReduce作业计算时=作业运行时间(小时)×作业调用的Core数量。

例如,一个MapReduce作业执行成功时调用了100 Core并消耗0.5小时,则计算时为100 Core×0.5小时=50

一个Map或Reduce作业默认占用2 Core(同时占用3 GB内存)。例如,一个Map作业运行了30分钟,则计算时为2 Core×0.5小时=1

MapReduce作业执行成功后,系统会统计作业所消耗的计算时。系统将在第二天对所有执行成功的MapReduce作业一次性汇总计费,体现在账号账单中,并自动从账号余额中扣除费用。
说明
  • 账单在第二天06:00前出账。
  • 执行失败的MapReduce作业不计费。
  • 任务排队时间不计费。
  • 相同作业会受集群负载环境的影响而产生较小的费用波动。
  • 资源的基本单位定义为CU(Compute Unit),1 CU包含的计算资源为4 GB内存和1 CPU Core。当作业消耗的内存大于4倍的1 CPU Core时,计算时为消耗内存量除以4。
  • 如果您购买了MaxCompute包年包月服务,可以在购买的服务范围内免费执行MapReduce作业,不需要额外支付费用。
  • 如果您对MapReduce作业计费存在疑问,请提工单咨询。

Lightning(交互式分析)按量计费

自2019年2月1日起,MaxCompute的Lightning服务正式开始按量计费,详情请参见Lightning服务

每执行一次Lightning查询作业,MaxCompute将根据作业的输入数据量进行计费。当天的所有查询作业的计费信息将在第二天一次性汇总。

Lightning查询作业的计费公式为:

一次Lightning查询作业费用=查询输入数据量×单价(0.03元/GB)
说明
  • Lightning服务使用单独的计算资源。即使您购买了MaxCompute包年包月服务,使用Lightning时也会按照查询作业扫描的数据量计费。
  • Lightning按照每条查询作业扫描的数据量(每条查询至少10 MB)计费。对于取消的查询作业,按实际扫描的数据量计费。
  • 账单在第二天06:00前出账。
  • 不查询不产生任何费用。
  • MaxCompute默认对数据进行列式存储和数据压缩。MaxCompute按照压缩后的数据量计算数据扫描量。
  • 查询分区表时,您可以应用分区过滤条件,减少数据扫描量并提升查询性能。
  • 华东1(杭州)、华东2(上海)、华北2(北京)、华南1(深圳)区域已开通Lightning服务。中国(香港)和新加坡(新加坡)区域开放Lightning服务公测。

Spark按量计费

自2019年2月1日起,MaxCompute正式对Spark作业按量计费,详情请参见MaxCompute Spark。Spark作业的计费公式为:
Spark作业当日计算费用=当日总计算时×单价(0.66元/计算时)

Spark作业的计算时详情如下:

  • 计算消耗的CPU Core及内存数量。
  • 1计算时包含1 CPU Core和4 GB内存。
  • 计算方法为MAX(CPU×时长, 向上取整(内存×时长/4))

    例如,执行Spark作业使用2 CPU Core和5 GB内存,运行1小时,则计算时为MAX(2×1, 向上取整(5×1/4))=2。执行Spark作业使用2 CPU Core和10 GB内存,运行1小时,则计算时为MAX(2×1, 向上取整(10×1/4))=3

Spark作业执行成功后,系统会统计作业所消耗的计算时。系统将在第二天对所有执行成功的Spark作业一次性汇总计费,体现在账号账单中,并自动从账号余额中扣除费用。
说明
  • 账单在第二天06:00前出账。
  • 作业排队时间不计费。
  • 相同作业会因为指定资源的大小不同而产生费用波动。
  • 如果您购买了MaxCompute包年包月服务,可以在购买的服务范围内免费执行Spark作业,不需要额外支付费用。
  • 如果您对Spark作业计费存在疑问,请提工单咨询。
  • 华东1(杭州)、华北2(北京)、华南1(深圳)区域已开通Spark作业按量计费服务,其他区域将陆续开放。

数据科学(Mars)按量计费

自2020年9月1日起,MaxCompute正式对Mars作业按量计费,详情请参见数据科学(Mars)。Mars作业的计费公式为:
Mars作业当日计算费用=当日总计算时×单价(0.66元/计算时)
Mars作业的计算时详情如下:
  • 计算消耗的CPU Core及内存数量。
  • 1计算时包含1 CPU Core和4 GB内存。
  • 计算方法为MAX(CPU×时长, 向上取整(内存×时长/4))

    例如,执行Mars作业使用2 CPU Core和5 GB内存,运行1小时,则计算时为MAX(2×1, 向上取整(5×1/4))=2。执行Mars作业使用2 CPU Core和10 GB内存,运行1小时,则计算时为MAX(2×1, 向上取整(10×1/4))=3

Mars作业执行成功后,系统会统计作业所消耗的计算时。系统将在第二天对所有执行成功的Mars作业一次性汇总计费,体现在账号账单中,并自动从账号余额中扣除费用。

说明
  • 账单在第二天06:00前出账。
  • 作业排队时间不计费。
  • 相同作业会因为指定资源的大小不同而产生费用波动。
  • 如果您购买了MaxCompute包年包月服务,可以在购买的服务范围内免费执行Mars作业,不需要额外支付费用。
  • 如果您对Mars作业计费存在疑问,请提工单咨询。
  • 华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、西南1(成都)和中国(香港)区域已开通Mars作业按量计费服务,其他区域将陆续开放。

查询加速(MCQA)按量计费

自2020年10月1日起,MaxCompute正式对MCQA作业按量计费,详情请参见查询加速(MCQA)

每执行一次MCQA作业,MaxCompute将根据作业的输入数据量进行计费。当天所有MCQA作业的计费信息将在第二天一次性汇总。

MCQA作业的计费公式为:
一次MCQA作业费用=查询输入数据量×单价(0.03元/GB)
说明
  • MCQA作业使用单独的计算资源。即使您购买了MaxCompute包年包月服务,执行MCQA作业时,MaxCompute也会按照查询作业扫描的数据量计费。
  • MaxCompute按照每条查询作业扫描的数据量(每条查询至少10 MB)计费。对于取消的查询作业,按实际扫描的数据量计费。
  • 账单在第二天06:00前出账。
  • 不查询不产生任何费用。
  • MaxCompute默认对数据进行列式存储和数据压缩。MaxCompute按照压缩后的数据量计算数据扫描量。
  • 查询分区表时,您可以应用分区过滤条件,减少数据扫描量并提升查询性能。
  • 华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)和西南1(成都)区域已开通MCQA作业按量计费服务,其他区域将陆续开放。