DataWorks是阿里云上的一款热门产品,可以为用户提供大数据开发调度服务。它支持了Data Lake Analytics(后文简称DLA)以后,DLA用户可以通过它进行定时任务调度,非常方便。本文将主要介绍如何使用DataWorks调度DLA的循环任务。
场景
使用DLA对历史数据按天做清洗。数据清洗的SQL是固定的,只是每次执行的时候需要传入不同的日期。
对于这个场景,我们需要:
- 部署一个赋值节点。该节点负责输出日期值,并作为下游循环节点的输入。
- 部署一个循环节点。该节点包含用来做数据清洗的一个或者一组SQL,其中关于日期取值是一个变量。每次循环输入值由赋值节点提供。
DataWorks操作
步骤一:新建业务流程和节点
登录DataWorks的控制台,并创建一个业务流程或使用原有的业务流程。
在新建的业务流程下,创建一个赋值节点和一个循环节点。
步骤二:配置赋值节点
打开节点“日期集合”的编辑页面。这里我们选择SHELL语言,将要执行的日期值写在一个数组里。
打开节点“日期集合”的调度配置页面。
在这里需要给赋值节点设置一个上游节点,这里可以设置为当前工作空间的root。比如我的工作空间名字叫jinluo_poc,则该节点为jinluo_poc_root。
步骤三:配置循环节点
双击循环节点进入编辑页面。可以看到三个节点,分别是start, sql和end。这里我们需要新建一个DLA的任务节点,并把sql替换为一个DLA的任务节点。
在调度配置页面设置依赖关系和节点上下文。上游节点设置为赋值节点“日期集合”,本节点的输入为赋值节点的输出。
设置DLA_SQL节点
选择一个DLA的数据源,并填写SQL。
这里面的pure_date的值是从赋值节点读入的。每次读取赋值节点的输出结果数组中的一个值。写法是固定的,如下所示。
h.`pure_date`=${dag.input[${dag.offset}]}
- dag.offset,