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

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

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

  • 任务二

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

前提条件

  • 您需要开通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服务。

步骤一:新增DLA数据源

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

步骤二:编排任务流

  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表。