全部产品
云市场

DataWorks调度AnalyticDB for MySQL任务

更新时间:2019-11-26 17:54:15

背景信息

DataWorks是基于MaxCompute作为计算和存储引擎的用于工作流可视化开发和托管调度运维的海量数据离线加工分析平台,支持按照时间和依赖关系的任务全面托管调度。AnalyticDB for MySQL用户可以通过DataWorks强大的任务托管调度功能,调度执行AnalyticDB for MySQL任务,使用DataWorks任务开发、任务依赖关系管理、任务调度任务运维等等全方位强大的功能。

目的

任务调度中一个重要的功能是任务之间的依赖,为演示该功能,本教程会在DataWorks中创建两个AnalyticDB for MySQL任务。表与任务之间的关系如下图所示。

任务关系

  • 任务一

    从orders表清洗出已经完成的订单:o_orderstatus = 'F',并将其写入finished_orders表。

  • 任务二

    从finished_orders中查询总价大于10000的订单:o_totalprice > 10000,并将其写入high_value_finished_orders表。

前提条件

  1. 根据AnalyticDB for MySQL快速入门,完成创建实例、设置白名单等准备工作。

    AnalyticDB for MySQL和DataWorks所属Region相同。

    • 如果您在DataWorks通过AnalyticDB for MySQL的外网地址连接AnalyticDB for MySQL,需要先申请外网地址,然后将DataWorks白名单添加到AnalyticDB for MySQL白名单

    • 如果您在DataWorks通过AnalyticDB for MySQL的VPC地址连接AnalyticDB for MySQL,需要先在DataWorks中添加独享资源组,并且独享资源组中的VPC与AnalyticDB for MySQL所属VPC相同。

    • 本教程将使用TPC-H测试数据集中的ORDERS表作为测试数据,连接AnalyticDB for MySQL数据库后,执行以下SQL创建测试数据表。

      1. CREATE TABLE orders(o_orderkey bigint NOT NULL COMMENT'',
      2. o_custkey int NOT NULL COMMENT'',
      3. o_orderstatus varchar NOT NULL COMMENT'',
      4. o_totalprice decimal(15,2) NOT NULL COMMENT'',
      5. o_orderdate date NOT NULL COMMENT'',
      6. o_orderpriority varchar NOT NULL COMMENT'',
      7. o_clerkvar char NOT NULL COMMENT'',
      8. o_shippriority int NOT NULL COMMENT'',
      9. o_comment varchar NOT NULL COMMENT'',
      10. dummy varchar
      11. )DISTRIBUTED BY HASH(o_orderkey);
      12. Create Table finished_orders (
      13. o_orderkey bigint NOT NULL,
      14. o_totalprice decimal(15,2) NOT NULL,
      15. primary key (o_orderkey)
      16. ) DISTRIBUTE BY HASH(o_orderkey)
      17. CREATE TABLE high_value_finished_orders (
      18. o_orderkey bigint NOT NULL,
      19. o_totalprice decimal(15,2) NOT NULL,
      20. PRIMARY KEY (`o_orderkey`)
      21. )
      22. DISTRIBUTED BY HASH(o_orderkey);
  2. 根据DataWorks准备工作,创建工作空间。

    工作空间的模式选择标准模式

实施步骤

步骤一:在DataWorks中添加AnalyticDB for MySQL数据源

详情请参见配置AnalyticDB for MySQL数据源

添加adb数据源添加adb数据源2成功添加adb数据源

DataWorks出于安全考虑,对建立连接的服务进行了安全控制,您需要将AnalyticDB for MySQL数据库的地址和端口加添加到白名单中。

运维中心设置白名单

步骤二:在DataWorks中创建AnalyticDB for MySQL任务

  1. 登录DataWorks控制台,单击对应项目栏中的进入数据开发

  2. 右键单击业务流程新建一个流程,本教程新建业务流程adb_task。

    新建业务流程

  3. 在业务流程下新建数据开发节点AnalyticDB for MySQL,节点名为finished_orders。

    finished_orders

  4. 单击finished_orders选择数据源设置为adb_source,然后执行以下SQL。

    任务一:从orders表清洗出已经完成的订单:o_orderstatus = 'F',并将其写入finished_orders表。

    1. use adb_demo;
    2. insert into finished_orders
    3. select O_ORDERKEY, O_TOTALPRICE
    4. from orders
    5. where O_ORDERSTATUS = 'F';

    执行SQL

  5. 可参考上述步骤,新建数据开发节点high_value_finished_orders。

    任务二:从finished_orders中查询出总价大于10000的订单:o_totalprice > 10000,并将其写入high_value_finished_orders表。

    1. use adb_demo;
    2. insert into high_value_finished_orders
    3. select * from finished_orders
    4. where O_TOTALPRICE > 10000;

    执行SQL

步骤三:配置任务依赖

DataWorks支持按照时间依赖关系的任务触发机制,支持多个任务按照指定的依赖关系在指定的时间运行。详情,请参见调度配置

例如,每天凌晨2点运行finished_orders任务:

配置任务调度配置任务调度

finished_orders任务成功运行之后再运行high_value_finished_orders任务:

依赖关系配置

步骤四:任务发布

任务配置好之后,就可以进行任务的发布和运维,详情,请参见任务管理

任务发布

任务发布之后,可以查看待发布的任务。

查看待发布任务提交发布任务

任务发布成功之后,您就可以进入任务运维页面查看任务,进行运维操作。

运维