您可以在数据管理DMS中创建和调度DLA任务流实现数仓开发,任务流只需定义一次,即可周期性地自动被调度执行,大大减少人工操作成本。同时执行DLA任务流时产生的中间结果可以被复用,例如用于其他数据分析任务,从而最大化DLA的资源利用。

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

  • 任务一

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

  • 任务二

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

前提条件

  • DLA

    您需要开通DLA服务,然后创建一个Schema(database)以及在Schema中创建测试表。

    1. 开通DLA服务,请参见开通数据湖分析服务

    2. 初始化数据库主账号密码,请参见重置数据库账号密码

    3. 根据建表向导创建Schema和表,请参见建表向导

      本文以TPC-H中的order.tbl数据为例,创建Schema和表。

      • 创建Schema

        ​  CREATE SCHEMA tpch with DBPROPERTIES(
            LOCATION = 'oss://oss-bucket-name/tpch/',
            catalog='oss'
          );​
      • orders表

        ​CREATE EXTERNAL TABLE 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://bucket-name/tpch/orders';​
      • 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://bucket-name/tpch/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://bucket-name/tpch/high_value_finished_orders/';​
  • DMS

    DMS产品详情页单击立即购买,开通DMS服务。

步骤一:新增DLA数据源

  1. 登录数据管理DMS控制台

  2. 单击新增实例右侧的加号(+)> 新增实例

  3. 新增实例页面,单击DLA-数据湖分析,然后单击确定

  4. 新增实例页面,根据页面提示进行参数配置。

    基本信息 数据库来源 选择云数据库
    数据库类型 选择DLA-数据湖分析
    实例地区 选择DLA所在地域。
    录入方式 您可以通过两种方式录入DLA信息:
    • 实例ID,从实例列表中选择DLA实例ID。
    • 连接串地址,手动输入DLA连接地址。
    实例ID
    • 录入方式为实例ID时,从实例列表中选择DLA实例ID。
    • 录入方式为连接串地址时,手动输入DLA连接地址。
    数据库账号 DLA中的数据库账号。
    数据库密码 数据库账号对应的密码。
    管控模式 请参见管控模式
    安全规则 选择DLA默认规则。
    高级信息 环境类型 选择生产
    实例名称 DLA的实例ID或者名称。
    开启跨度查询 选中开启跨度查询。
    不锁表结构变更 选择关闭
    实例DBA 默认值。
    查询超时时间(s) 60。
    导出超时时间(s) 600
  5. 完成参数配置后单击测试连接,测试成功后单击提交

步骤二:编排任务流

  1. 登录数据管理DMS控制台

  2. 单击菜单栏数据结构 > 数仓开发

  3. 单击左侧导航栏中的开发空间,然后单击下方的任务编排右侧加号(+)。

  4. 新建任务流页面,设置任务流名称描述,然后单击确认

  5. 拖拽两个DLA节点到中间的空白区域中,然后单击任务1的下边框连接点,引出一条到达任务2的带箭头直线关联任务1和任务2。

  6. 分别单击任务1和任务2节点,在内容设置中输入或者选择DLA Schema的名字,然后单击保存

  7. 单击任务1节点,在内容设置中输入SQL实现任务一,即从orders表查询出已经完成的订单o_orderstatus = 'F',并将其写入finished_orders表,单击保存

    ​ insert into finished_orders
       select O_ORDERKEY, O_TOTALPRICE
       from orders
       where O_ORDERSTATUS = 'F';​

  8. 单击任务2节点,在内容设置中输入SQL实现任务二,即从finished_orders中查询出总价大于10000的订单o_totalprice > 10000,并将其写入high_value_finished_orders表,单击保存

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

步骤三:运行和查看任务

  1. 任务流编排完成后,单击试运行,系统弹出提示窗口,单击确认运行任务。

  2. 也可以开启调度配置为任务设置周期运行策略。

  3. 任务运行结束后,您可以单击运维中心查看任务运行状态。

  4. 您也可以连接DLA,在DLA中查询任务运行结果。

    以下是DLA中查询出的任务一和任务二执行结果:

    • 任务一

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

    • 任务二

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