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

目的

任务调度中一个重要的功能是任务之间的依赖,为演示该功能,本教程会在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创建测试数据表。
      CREATE TABLE orders(
            o_orderkey bigint NOT NULL COMMENT'',
            o_custkey int NOT NULL COMMENT'',
            o_orderstatus varchar NOT NULL COMMENT'',
            o_totalprice decimal(15,2) NOT NULL COMMENT'',
            o_orderdate date NOT NULL COMMENT'',
            o_orderpriority varchar NOT NULL COMMENT'',
            o_clerkvar char NOT NULL COMMENT'',
            o_shippriority int NOT NULL COMMENT'',
            o_comment varchar NOT NULL COMMENT'',
            dummy varchar
        )DISTRIBUTED BY HASH(o_orderkey);
      CREATE TABLE finished_orders (
             o_orderkey bigint NOT NULL,
             o_totalprice decimal(15,2) NOT NULL,
             primary key (o_orderkey)
         )DISTRIBUTE BY HASH(o_orderkey);
      
      CREATE TABLE high_value_finished_orders (
            o_orderkey bigint NOT NULL,
            o_totalprice decimal(15,2) NOT NULL,
            PRIMARY KEY (`o_orderkey`)
        )
        DISTRIBUTED BY HASH(o_orderkey);
  2. 在DataWorks中创建工作空间
    说明 工作空间的模式选择标准模式。

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

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

参数配置数据源添加成功

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

设置白名单1设置白名单2

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

  1. 登录DataWorks控制台,单击对应项目栏中的进入数据开发
  2. 右键单击业务流程新建一个流程,本教程新建业务流程adb_task。
    新建业务流程
  3. 在业务流程下新建数据开发节点AnalyticDB for MySQL,节点名为finished_orders。
    新建节点
  4. 单击finished_orders选择数据源设置为adb_source,然后执行以下SQL。

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

     use adb_demo;
     insert into finished_orders
     select O_ORDERKEY, O_TOTALPRICE
     from orders 
     where O_ORDERSTATUS = 'F';
    finished_orders
  5. 可参考上述步骤,新建数据开发节点high_value_finished_orders。

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

     use adb_demo;
     insert into high_value_finished_orders
     select * from finished_orders
     where O_TOTALPRICE > 10000;
    high_value_finished_orders

步骤三:配置任务依赖

DataWorks支持按照时间依赖关系的任务触发机制,支持多个任务按照指定的依赖关系在指定的时间运行。

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

配置任务依赖1配置任务依赖2

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

运行high_value_finished_orders任务

步骤四:任务发布

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

任务运维

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

查看待发布的任务查看待发布的任务2

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

运维任务