文档

包年包月项目使用按量计费资源

更新时间:

本文为您介绍如何通过MaxCompute管家设置包年包月项目使用包年包月CU资源,而项目中的某些作业使用按量计费CU资源。

概述

使用MaxCompute进行数据开发时,您通常需要按照业务需求选择包年包月或者按量计费CU资源,不同计费模式的CU资源具有不同的优劣。

包年包月CU资源为独享资源;按量计费CU资源为公共资源,按照需要弹性使用。某些情况下,会同时使用包年包月和按量计费的CU资源,对于资源需求量极高且优先级要求也很高的作业,包年包月CU资源远远不足,您需要使用按量计费CU资源来满足需求。

您可以先通过MaxCompute管家对使用包年包月计费模式的项目设置按量计费配额,然后在需要使用按量计费CU资源的SQL作业脚本中增加set odps.task.quota.preference.tag=payasyougo;语句,与SQL语句同时提交,即可将SQL作业提交到按量计费弹性资源池。SQL执行成功则会按量计费。

说明

如果您的项目所属区域在华东2(上海)、华东1(杭州)、华北2(北京)、华南1(深圳)、华北3(张家口)、西南1(成都)的其中一个,那么可以使用单作业级别指定Quota功能,详情请参见作业级别指定Quota。该功能不限制当前项目计费模式,同时支持所有作业类型。

使用限制

您在使用该功能前需要确保项目满足如下要求:

  • 项目的计费模式为包年包月。

  • 项目所在区域已开通按量计费服务,详情请参见开通MaxCompute和DataWorks

  • 只支持SQL和MapReduce类型作业。

注意事项

您在使用该功能时需要注意:

操作步骤

  1. 登录DataWorks控制台

  2. 在左侧导航栏,单击计算引擎列表 > MaxCompute

  3. 计算引擎列表—MaxCompute页面上方选择您所在的区域。

  4. 包年包月区域,单击CU管理,进入MaxCompute管家页面。

  5. 在左侧导航栏,单击项目,在包年包月项目区域,单击需要使用按量计费CU资源的项目右侧的增加按量付费配额

    增加按量付费配额配置成功后,按量付费属性值变为已添加

  6. 在需要使用按量计费CU资源的SQL语句前增加set odps.task.quota.preference.tag=payasyougo;命令,与SQL语句一起提交。

  7. (可选)在左侧导航栏,单击作业,在作业快照页签,查看SQL作业运行情况。

  8. (可选)如果项目不再使用按量计费CU资源,您可以在左侧导航栏,单击项目,在包年包月项目区域,单击需要移除按量计费CU资源的项目右侧的移除按量付费配额。移除成功后,新提交的SQL作业不会再使用按量计费CU资源。

通过Java SDK使用示例

您可以通过Java SDK方式提交作业,实现包年包月项目使用按量计费资源。命令示例如下。Java SDK详情请参见Java SDK介绍

import com.aliyun.odps.*;
import com.aliyun.odps.account.Account;
import com.aliyun.odps.account.AliyunAccount;
import com.aliyun.odps.task.SQLTask;

import java.util.HashMap;
import java.util.Map;

public class TestOdpsSdk {
public static void main(String args[]) throws OdpsException {
Account account = new AliyunAccount("AccessKey_id", "AccessKey_secret");
Odps odps = new Odps(account);
odps.setEndpoint("odps public cloud url");
odps.setDefaultProject("your_project_name");

String sqlText = "select count(*) from test_table1;";
Map<String, String> hints = new HashMap<>();
hints.put("odps.task.quota.preference.tag", "payasyougo"); /** 提示系统sqlText希望提交到按量计费资源组(只有当your_project_name是包年包月计费类型,且添加了按量计费资源组,该配置才生效)。*/
Instance instance = SQLTask.run(odps, odps.getDefaultProject(), sqlText, hints, null);

LogView logView = new LogView(odps);
System.out.println(logView.generateLogView(instance, 48));
instance.waitForSuccess();
}
}
  • 本页导读 (1)
文档反馈