入门指南:如何快速配置编排和周期调度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流程的方式,会更加直观,推荐使用。
- 您可以阅读 任务和实例运维 的帮助文档来详解了解如何对任务和实例进行各种运维操作。
下一步建议
- 无。