入门指南:如何快速配置编排和周期调度ETL流程
适用场景
数仓工程师主要工作之一是构建离线数仓,即创建和维护周期调度ETL流程。本文会概要介绍如何基于 Lakehouse Studio 来配置和编排 ETL 任务,并配置调度属性,使得整个 ETL 流程能够被定时、按照依赖关系调度运行。
前置阅读
在阅读本指南之前,建议完成以下文档的阅读和理解:
操作指南
在 入门指南:如何快速创建同步任务来导入数据 中,我们已经创建了一个数据同步任务。本文档将以示例的方式,继续创建一个 SQL 处理任务,并让其依赖于该数据同步任务,从而构建出一个 ETL 流程,并配置调度定时来定期运行。
使用说明
需要具备 工作空间管理员角色(workspace_admin) 或者 工作空间开发角色(workspace_dev) 权限的用户,才能使用任务开发、提交发布和运维中心的功能。
SQL任务的创建
-
通过下图的操作入口,来创建一个 SQL 任务:

-
在创建任务的弹框中,将任务命名为“SQL_DWS_聚合”,并单独创建一个名为“数据处理”的文件夹。

-
SQL 任务新建好后,如下图所示,在编辑区可以编写具体的 SQL 代码。

-
前面通过数据同步任务,已经把 MySQL 的数据同步到 Lakehouse 的 test_json 表中。在 SQL 任务中,基于这张表中的数据进行聚合处理,比如把表中的 c2_tinyint_column、c3_smallint_column 两个字段分别求和。导航到“数据” Tab 页,定位到目标表 test_json,然后在操作栏中点击“数据查询”,可以自动将 SELECT 代码模板插入到编辑器中,如下图所示,这有助于提升代码编写效率。

-
基于上述代码模板修改为所需的处理逻辑,然后保存。此处仅为示意,进行了简化处理,聚合结果未写入新表。

任务编排和调度配置
完成同步任务和 SQL 任务的创建后,要构建完整的离线周期处理 ETL 流程,还需要配置调度定时和任务依赖关系。
-
打开同步任务,通过页面的“调度”按钮,打开调度属性的配置。

-
配置调度时间:配置成每天调度、执行多次、每一个小时调度一次,如下图所示。通过“预览调度时间”可以查看基于配置对应的具体定时时间。


-
配置实例信息:这里主要需要配置“实例重跑方式”。由于本任务不存在重跑后产生数据不幂等的问题,可以重跑,因此选择“运行成功或失败,都可以重跑”,其他属性使用默认值即可。

-
配置调度依赖:同步任务是流程中的第一个任务,没有上游依赖,此处留空即可。

-
配置任务产出:任务产出用于描述本任务写入的是哪张表,以便下游任务在消费此表时,能智能识别到对应的上游任务。点击“智能解析”按钮,系统会通过任务配置自动解析出当前任务的产出表并回填到配置中。

-
完成上述调度配置后,点击页面右下角的“确定”按钮将配置保存。回到任务页面,如下图所示,“提交”按钮会变成可点击的状态。

-
点击“提交”按钮,在弹窗中二次核对信息无误后,再点击确定,同步任务即被提交到生产环境进行定期调度运行。

-
切换到 SQL 任务,通过页面的“调度”按钮,打开调度属性的配置,需要配置的属性和同步任务相同,即:
- 配置成一天调度多次、每小时调度一次。
- 重跑属性配置成“运行成功或者失败,都可以重跑”。
- 请特别注意需要配置 SQL 任务对同步任务的依赖关系。点击页面上的“智能解析”按钮,会自动识别 SQL 任务所依赖的同步任务并自动回填;也可以手动添加。

-
同上,SQL任务的调度配置完成后,点击页面右下角的“确定”按钮将配置信息保存下来。回到任务页面,点击“提交”按钮把SQL任务也提交做定时调度。

-
进入“任务运维”查看实际效果,有两种方式进入:
-
方式一:通过左侧导航 运维监控 > 任务运维
-
方式二:在任务上直接点击“运维”按钮,可直达运维中心中该任务的详情页,建议使用此方式。

-
-
查看任务的详情,如下图所示,和预期一致,SQL任务依赖了同步任务:

-
点击“任务实例”Tab,可以看到任务对应的具体实例的列表,实例已按照配置的定时时间生成(只生成任务提交时间之后的实例):

-
点击实例 ID 可以进入实例的详情页面进行查看。在定时时间到达后,上游的同步任务实例先运行,运行成功后,下游的 SQL 任务实例才会开始运行。实例触发运行需要同时满足两个条件(充分必要条件):实例自身的定时时间已到达,且上游实例处于运行成功状态。

-
至此就完成了一个完整的ETL流程的编排构建,并提交进行周期调度、运行。
限制说明
- 权限控制:需要具备
工作空间管理员角色(workspace_admin)或者工作空间开发角色(workspace_dev)权限的用户,才能使用任务开发、提交发布和运维中心的功能。
相关文档
- 您可以阅读 任务开发 的帮助文档来详细了解如何进行任务开发和调度配置。其中 任务组 功能提供了一种可视化编排ETL流程的方式,会更加直观,推荐使用。
- 您可以阅读 任务和实例运维 的帮助文档来详细了解如何对任务和实例进行各种运维操作。
下一步建议
- 暂无。
