任务管理
当任务被提交至调度系统后,可以在「运维中心→任务管理」模块查看已提交的任务列表,包含任务的基本信息。常见的操作包括补数据、查看依赖视图、运行报告等
|
任务列表
点击「运维中心→离线开发→任务管理」菜单,进入任务列表,包括任务名称、提交时间、任务类型、责任人等信息
基本功能
列表支持如下基本操作:
-
任务名称搜索:默认为模糊搜索,点击搜索栏右侧的icon,可在「精确匹配」/「头部匹配」/「尾部匹配」3种模式中切换
-
基本过滤:包含任务责任人、是否是我的任务(即责任人为本人的任务)、今日修改、已冻结等条件
-
表头过滤:支持按照任务类型、调度周期进行过滤
冻结与解冻
已冻结的任务,将会在任务名称后标注「已冻结」,可对单个任务执行「冻结/解冻」操作,或在列表多选任务批量进行「冻结/解冻」
冻结与解冻操作是立即生效的,尚未提交至引擎的实例,将会被立即冻结/解冻。关于实例冻结的处理,请参考实例的生命周期一节的描述
工作流的冻结操作比较特殊,请参考下节内容
工作流
工作流是一种较为特殊的任务类型,在任务列表中,工作流会以多行的形式列出,工作流名称是一行,其内部每个节点是单独的一行,不区分节点间的上下游关系。
-
对列表进行搜索或过滤时,若未指定任务类型,若搜索结果中包含工作流内部节点,则搜索结果中会将工作流自动展开,列出命中搜索结果的内部节点。点击「收缩」icon时,会将工作流内部节点收缩起来,再次点击时,会将内部所有节点全部展示出来,而非刚才的搜索结果
-
对列表进行搜索或过滤时,若指定了任务类型,则搜索结果中将按照指定的任务类型展现,每次执行「收缩/展开」操作时,将会显示稳定的搜索结果,不会将工作流所有节点全部展示出来
-
若单独指定任务类型为「工作流」,则搜索结果仅会展现出工作流名称,点击展开时,不会显示内部的节点列表
工作流的冻结:
-
若只对工作流根节点执行冻结,未对内部子节点执行冻结,这种冻结是无效的
-
对工作流内部节点冻结是起效的,工作流部分节点冻结后,下游的节点在运行时也将自动处于冻结状态
只对工作流根节点冻结是无效的,需要对内部具体节点执行冻结 |
补数据
「补数据」是对历史数据的重刷,典型场景举例如下:
-
修改了某个任务的代码,需要将本月的数据按照新的代码重新跑一遍
-
新开发了一个任务,需要尽快输出今年的统计数据
在「运维中心→离线任务→任务管理」菜单中,在列表中点击相应任务的「补数据」按钮,在弹窗中选择待补数据的任务及其下游任务,并指定「业务日期」即可

基本原理
补数据的基本原理是「系统参数替换」,但在进行参数替换之前,还需在表结构设计和代码设计上进行配合,下面举例说明:
-
有如下3张表,均包含
id
、name
2个字段,均为分区表(分区字段为ds
)。3张表的血缘关系为t2+t3→t1
-- t1、t2、t3建表语句雷同
create table if not exists t1 (
id string
,name string
)
PARTITIONED BY (ds string);
-
这3张表对应的加工任务如下:
-- 注意在分区指定时,需要使用系统参数,而不是写死一个分区名称
INSERT OVERWRITE TABLE t1 PARTITION(ds = '${bdp.system.bizdate}')
select
t2.id
, t2.name
from t2 join t3 on t2.id = t3.id
where t2.ds = '${bdp.system.bizdate}'
and t3.ds= '${bdp.system.bizdate}';
假设业务日期为 2020-03-05
,则系统自动完成参数替换,将执行如下代码:
INSERT OVERWRITE TABLE t1 PARTITION(ds = '20200305')
select
t2.id
, t2.name
from t2 join t3 on t2.id = t3.id
where t2.ds = '20200305'
and t3.ds= '20200305';
在上述加工代码中,有如下几点注意事项:
-
结果表需按分区写入,写入模式必须为覆盖,不能为追加(
INSERT OVERWRITE TABLE t1
),以这种方式来保证代码可以反复多次执行,每次执行的输出结果是相同的 -
源表、目标表按分区读写
-
分区名填写系统变量,而不是写死分区名(
${bdp.system.bizdate}
),这样仅需一次编码,每天运行时,自动完成参数替换,无需人工干预
在执行补数据时,用户需指定目标任务、业务日期起止范围,系统根据业务日期范围自动完成参数替换,实现历史数据的重刷,例如:对上述任务执行补数据,业务日期选择20200305~20200307,则自动生成3个实例,分别重刷了20200305、20200306和20200307分区的数据,实现了历史数据的重刷
分钟粒度
离线开发支持按照分钟时间段进行补数据,专门应用于分钟、小时任务,仅需在补数据弹窗中勾选「选择分钟粒度」,并设置起止时间。
-
业务日期区间和分钟时间区间是「且」的关系,举例说明:
业务日期:2019-01-01~2019-01-03
具体时间:01:30~03:00
表示:2019-01-01 ~ 2019-01-03期间内,每天的01:30~03:00开始运行的实例
-
时间范围为左闭右闭,设置为01:30~03:00,计划时间等于01:00和03:00的实例都将被生成
-
选择分钟粒度后,补数据时,跨周期依赖配置无效
举例如下:
-
分钟任务,设置为每隔5分钟运行一次,自依赖模式,每次运行时,处理当天全天的数据,正常运行时,全天产生288个实例
-
2020-05-06 08:00,发现4日、5日有部分实例执行失败,由于采用自依赖模式,分钟实例大面积失败,需要进行补数据。由于任务处理的是全天的数据,补数据时,仅需将任务每天最后一个实例运行成功即可
-
选定任务进行补数据,业务日期设置为「2020-05-03 ~ 2020-05-04」,勾选「选择分钟粒度」,并选择具体时间为「23:54~23:56」,按此设置,仅会产生2个实例,计划时间为:2020-05-04 23:55、2020-05-05 23:55
依赖视图
在「任务列表」中点击任务名称,在任务右侧会展开依赖视图面板,依赖视图中,展现了任务与其上下游任务的依赖关系,默认展开当前任务及其下游1层任务

基本操作
依赖视图中的基本操作如下:
-
绘图区域:
-
DAG图的拖拽:按住左键,可对DAG图进行整体拖拽移动
-
DAG图的刷新:点击「刷新」icon,可对依赖视图整体刷新(通常用于回到最初选择的任务),需注意,刷新后,已经展开的上下有关系、缩放比例将会重置
-
DAG图的放大、缩小:点击「放大」或「缩小」icon即可
-
查看代码:点击后,从当前页面跳转至数据开发页面
-
-
右键菜单:在依赖视图中,在某个任务上点击鼠标右键,弹出右键菜单
-
展开上/下游(6层):以当前节点为基准,展开当前节点的上下游6层任务,与当前节点平行的任务将不会展现
-
补数据
-
操作记录:展现本任务的操作记录,操作记录包括:创建、提交、冻结/解冻
-
冻结/解冻:对当前任务进行冻结/解冻
-
查看代码:与绘图区域的「查看代码」相同
-
查看实例:点击后跳转至「周期实例」页面,并按此任务名触发一次搜索,业务日期设置为当天
-
刷新DAG图后,已经展开的上下有关系、缩放比例将会重置 |