Data Works是基于MaxCompute作为计算和存储引擎的用于工作流可视化开发和托管调度运维的海量数据离线加工分析平台,支持按照时间和依赖关系的任务全面托管调度。本文主要介绍如何通过DataWorks调度DLA任务。

目的

任务调度中一个重要的功能是任务之间的依赖,为演示这个功能,本文会在DataWorks中创建两个DLA任务。表和任务之间的关系如下图所示:

  • 任务一

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

  • 任务二

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

本文中源数据orders表存储在OSS dlaossfile1 Bucket的dla Object中,即oss://dlaossfile1/dla/,单击orders.txt下载源数据。空文件finished_orders.txt和high_value_finished_orders.txt存储位置为oss://dlaossfile1/dla/finished_orders/

前提条件

  1. 您已经开通DLADataWorks以及OSS服务,且DLA、DataWorks、OSS所属Region相同。本文中三个服务所属Region均为华东1(杭州)。
  2. 创建项目空间,详情请参见创建工作空间,本教程项目空间为liujing_dataworks_test。
  3. 在DLA中创建服务访问点,详情请参见设置服务访问点

操作步骤

  1. 在DLA中创建OSS Schema
    CREATE SCHEMA dataworks_demo with DBPROPERTIES(
      CATALOG = 'oss',  
    LOCATION = 'oss://dlaossfile1/dla/');
  2. 在DLA中创建指向OSS文件的外表
    • orders表
      CREATE EXTERNAL TABLE IF NOT EXISTS orders (
          O_ORDERKEY INT,
           O_CUSTKEY INT,
           O_ORDERSTATUS STRING,
           O_TOTALPRICE DOUBLE,
           O_ORDERDATE DATE,
           O_ORDERPRIORITY STRING,
           O_CLERK STRING,
           O_SHIPPRIORITY INT,
           O_COMMENT STRING
      )
       ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
       STORED AS TEXTFILE LOCATION 'oss://dlaossfile1/dla/';
    • finished_orders表
       CREATE EXTERNAL TABLE IF NOT EXISTS finished_orders (
            O_ORDERKEY INT,
              O_TOTALPRICE DOUBLE
        )
         ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
         STORED AS TEXTFILE
         LOCATION 'oss://dlaossfile1/dla/finished_orders/';
    • high_value_finished_orders表
        CREATE EXTERNAL TABLE IF NOT EXISTS high_value_finished_orders (
            O_ORDERKEY INT,
             O_TOTALPRICE DOUBLE
        )
         ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'   
      STORED AS TEXTFILE
        LOCATION 'oss://dlaossfile1/dla/finished_orders/';
  3. 在DataWorks中添加DLA数据源
    1. 登录DataWorks控制台,单击对应项目栏中的进入数据集成
    2. 单击新增数据源,数据源选择Data Lake Analytics(DLA)
    3. 新增Data Lake Analytics(DLA)数据源页面,进行参数配置。

      参数配置说明如下表所示:

      数据源名称 为数据源指定一个名字,便与后续管理。
      数据源描述 添加数据源描述,该项为可选填项。
      连接Url DLA的服务访问点地址信息,由Address:Port组成。可通过设置服务访问点获取Address:Port
      数据库名 DLA中创建的OSS连接,本教程为dataworks_demo。
      用户名 登录DLA使用的用户名。
      密码 登录DLA使用的用户名对应的密码。
    4. 添加DataWorks中的沙箱白名单

      前往DataWorks的配置页面: https://setting-cn-hangzhou.data.aliyun.com/#/project在安全设置区域,有一个“沙箱白名单“配置,需要把我们刚刚添加的DLA的域名信息添加进去

    5. 修改DLA白名单。

      由于DataWorks中对DLA数据源有白名单限制,您需要根据DLA所属Region,将下表中对应的IP地址或者IP地址段加入DLA的白名单。

      华东1(杭州) 100.64.0.0/8,11.193.102.0/24,11.193.215.0/24,11.194.110.0/24,11.194.73.0/24,118.31.157.0/24,47.97.53.0/24,11.196.23.0/24,47.99.12.0/24,47.99.13.0/24,114.55.197.0/24,11.197.246.0/24,11.197.247.0/24
      华东2(上海) 11.193.109.0/24,11.193.252.0/24,47.101.107.0/24,47.100.129.0/24,106.15.14.0/24,10.117.28.203,10.117.39.238,10.143.32.0/24,10.152.69.0/24,10.153.136.0/24,10.27.63.15,10.27.63.38,10.27.63.41,10.27.63.60,10.46.64.81,10.46.67.156,11.192.97.0/24,11.192.98.0/24,11.193.102.0/24,11.218.89.0/24,11.218.96.0/24,11.219.217.0/24,11.219.218.0/24,11.219.219.0/24,11.219.233.0/24,11.219.234.0/24,118.178.142.154,118.178.56.228,118.178.59.233,118.178.84.74,120.27.160.26,120.27.160.81,121.43.110.160,121.43.112.137,100.64.0.0/8
      华南1(深圳) 100.106.46.0/24,100.106.49.0/24,10.152.27.0/24,10.152.28.0/24,11.192.91.0/24,11.192.96.0/24,11.193.103.0/24,100.64.0.0/8,120.76.104.0/24,120.76.91.0/24,120.78.45.0/24
      中国香港 10.152.162.0/24,11.192.196.0/24,11.193.11.0/24,100.64.0.0/8,11.192.196.0/24,47.89.61.0/24,47.91.171.0/24,11.193.118.0/24,47.75.228.0/24
      亚太东南1(新加坡) 100.106.10.0/24,100.106.35.0/24,10.151.234.0/24,10.151.238.0/24,10.152.248.0/24,11.192.153.0/24,11.192.40.0/24,11.193.8.0/24,100.64.0.0/8,100.106.10.0/24,100.106.35.0/24,10.151.234.0/24,10.151.238.0/24,10.152.248.0/24,11.192.40.0/24,47.88.147.0/24,47.88.235.0/24,11.193.162.0/24,11.193.163.0/24,11.193.220.0/24,11.193.158.0/24,47.74.162.0/24,47.74.203.0/24,47.74.161.0/24,11.197.188.0/24
      亚太东南2(澳洲,悉尼) 11.192.100.0/24,11.192.134.0/24,11.192.135.0/24,11.192.184.0/24,11.192.99.0/24,100.64.0.0/8,47.91.49.0/24,47.91.50.0/24,11.193.165.0/24,47.91.60.0/24
      华北2(北京) 100.106.48.0/24,10.152.167.0/24,10.152.168.0/24,11.193.50.0/24,11.193.75.0/24,11.193.82.0/24,11.193.99.0/24,100.64.0.0/8,47.93.110.0/24,47.94.185.0/24,47.95.63.0/24,11.197.231.0/24,11.195.172.0/24,47.94.49.0/24,182.92.144.0/24
      美国西部1 10.152.160.0/24,100.64.0.0/8,47.89.224.0/24,11.193.216.0/24,47.88.108.0/24
      美国东部1 11.193.203.0/24,11.194.68.0/24,11.194.69.0/24,100.64.0.0/8,47.252.55.0/24,47.252.88.0/24
      亚太东南3(马来西亚,吉隆坡) 11.193.188.0/24,11.221.205.0/24,11.221.206.0/24,11.221.207.0/24,100.64.0.0/8,11.214.81.0/24,47.254.212.0/24,11.193.189.0/24
      欧洲中部1(德国,法兰克福) 11.192.116.0/24,11.192.168.0/24,11.192.169.0/24,11.192.170.0/24,11.193.106.0/24,100.64.0.0/8,11.192.116.14,11.192.116.142,11.192.116.160,11.192.116.75,11.192.170.27,47.91.82.22,47.91.83.74,47.91.83.93,47.91.84.11,47.91.84.110,47.91.84.82,11.193.167.0/24,47.254.138.0/24
      亚太东北1(日本) 100.105.55.0/24,11.192.147.0/24,11.192.148.0/24,11.192.149.0/24,100.64.0.0/8,47.91.12.0/24,47.91.13.0/24,47.91.9.0/24,11.199.250.0/24,47.91.27.0/24
      中东东部1(阿联酋,迪拜) 11.192.107.0/24,11.192.127.0/24,11.192.88.0/24,11.193.246.0/24,47.91.116.0/24,100.64.0.0/8
      亚太东南1(印度,孟买) 11.194.10.0/24,11.246.70.0/24,11.246.71.0/24,11.246.73.0/24,11.246.74.0/24,100.64.0.0/8,149.129.164.0/24,11.194.11.0/24
      英国 11.199.93.0/24,100.64.0.0/8
      亚太东南5(印度尼西亚,雅加达) 11.194.49.0/24,11.200.93.0/24,11.200.95.0/24,11.200.97.0/24,100.64.0.0/8,149.129.228.0/24,10.143.32.0/24,11.194.50.0/24
      华北2(政务云) 11.194.116.0/24,100.64.0.0/8 如果IP地址段添加不成功,请添加IP地址:11.194.116.160,11.194.116.161,11.194.116.162,11.194.116.163,11.194.116.164,11.194.116.165,11.194.116.167,11.194.116.169,11.194.116.170,11.194.116.171,11.194.116.172,11.194.116.173,11.194.116.174,11.194.116.175
    6. 完成上述参数配置后,单击测试连通性进行连通性测试,测试通过后单击完成
  4. 在DataWorks中创建DLA调度任务
    1. 登录DataWorks控制台,单击对应项目栏中的进入数据开发
    2. 右键单击业务流程新建一个流程,本教程新建业务流程dla_test_1。
    3. 新建一个DLA任务,本教程为finished_orders。
    4. 单击DLA任务finished_orders,选择数据源设置为DLA数据源。
      说明 可参考上述步骤,创建多个任务。本文创建两个任务:finished_orders、high_value_finished_orders。
  5. 在DataWorks中执行DLA调度任务

    • 任务一:从orders表查询出已经完成的订单:o_orderstatus = 'F',并将其写入finished_orders表。
        insert into finished_orders
        select O_ORDERKEY, O_TOTALPRICE
        from orders
        where O_ORDERSTATUS = 'F';
    • 任务二:从finished_orders中查询出总价大于10000的订单:o_totalprice > 10000,并将其写入high_value_finished_orders表。
         insert into high_value_finished_orders
         select * from finished_orders
         where O_TOTALPRICE > 10000;

后续操作

  • 任务配置

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

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

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

  • 任务发布

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