任务管理

当任务被提交至调度系统后,可以在「运维中心→任务管理」模块查看已提交的任务列表,包含任务的基本信息。常见的操作包括补数据、查看依赖视图、运行报告等

  • 任务管理中仅列出任务,不包含实例信息

  • 任务一旦被提交,将会立即显示在任务管理列表中,目前尚不支持任务下线功能

任务列表

点击「运维中心→离线开发→任务管理」菜单,进入任务列表,包括任务名称、提交时间、任务类型、责任人等信息

基本功能

列表支持如下基本操作:

  • 任务名称搜索:默认为模糊搜索,点击搜索栏右侧的icon,可在「精确匹配」/「头部匹配」/「尾部匹配」3种模式中切换

  • 基本过滤:包含任务责任人、是否是我的任务(即责任人为本人的任务)、今日修改、已冻结等条件

  • 表头过滤:支持按照任务类型、调度周期进行过滤

冻结与解冻

已冻结的任务,将会在任务名称后标注「已冻结」,可对单个任务执行「冻结/解冻」操作,或在列表多选任务批量进行「冻结/解冻」

冻结与解冻操作是立即生效的,尚未提交至引擎的实例,将会被立即冻结/解冻。关于实例冻结的处理,请参考实例的生命周期一节的描述

工作流的冻结操作比较特殊,请参考下节内容

工作流

工作流是一种较为特殊的任务类型,在任务列表中,工作流会以多行的形式列出,工作流名称是一行,其内部每个节点是单独的一行,不区分节点间的上下游关系。

  • 对列表进行搜索或过滤时,若未指定任务类型,若搜索结果中包含工作流内部节点,则搜索结果中会将工作流自动展开,列出命中搜索结果的内部节点。点击「收缩」icon时,会将工作流内部节点收缩起来,再次点击时,会将内部所有节点全部展示出来,而非刚才的搜索结果

  • 对列表进行搜索或过滤时,若指定了任务类型,则搜索结果中将按照指定的任务类型展现,每次执行「收缩/展开」操作时,将会显示稳定的搜索结果,不会将工作流所有节点全部展示出来

  • 若单独指定任务类型为「工作流」,则搜索结果仅会展现出工作流名称,点击展开时,不会显示内部的节点列表

工作流的冻结:

  • 若只对工作流根节点执行冻结,未对内部子节点执行冻结,这种冻结是无效的

  • 对工作流内部节点冻结是起效的,工作流部分节点冻结后,下游的节点在运行时也将自动处于冻结状态

只对工作流根节点冻结是无效的,需要对内部具体节点执行冻结

补数据

「补数据」是对历史数据的重刷,典型场景举例如下:

  • 修改了某个任务的代码,需要将本月的数据按照新的代码重新跑一遍

  • 新开发了一个任务,需要尽快输出今年的统计数据

在「运维中心→离线任务→任务管理」菜单中,在列表中点击相应任务的「补数据」按钮,在弹窗中选择待补数据的任务及其下游任务,并指定「业务日期」即可

按依赖关系补数据

基本原理

补数据的基本原理是「系统参数替换」,但在进行参数替换之前,还需在表结构设计和代码设计上进行配合,下面举例说明:

  • 有如下3张表,均包含 idname 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

工作流

对工作流补数据可分为2种情况:对工作流整体补数据、对局部节点补数据:

  • 对工作流整体补数据,在「任务列表」的工作流一行点击「补数据」按钮,弹窗中列出工作流名称,不会列出内部节点名称,对此执行补数据即可

  • 对工作流部分节点补数据:

    • 方法1:在「任务列表」中,将工作流内部节点展开,选择待补数据的节点,在其内部节点的某一行点击「补数据」

    • 方法2:在依赖视图面板中工作流显示为一个整体,点击「展开」icon,在展开的工作流弹窗点击「补数据」

部分节点补数据 方法2

依赖视图

在「任务列表」中点击任务名称,在任务右侧会展开依赖视图面板,依赖视图中,展现了任务与其上下游任务的依赖关系,默认展开当前任务及其下游1层任务

任务依赖视图

基本操作

依赖视图中的基本操作如下:

  • 绘图区域:

    • DAG图的拖拽:按住左键,可对DAG图进行整体拖拽移动

    • DAG图的刷新:点击「刷新」icon,可对依赖视图整体刷新(通常用于回到最初选择的任务),需注意,刷新后,已经展开的上下有关系、缩放比例将会重置

    • DAG图的放大、缩小:点击「放大」或「缩小」icon即可

    • 查看代码:点击后,从当前页面跳转至数据开发页面

  • 右键菜单:在依赖视图中,在某个任务上点击鼠标右键,弹出右键菜单

    • 展开上/下游(6层):以当前节点为基准,展开当前节点的上下游6层任务,与当前节点平行的任务将不会展现

    • 补数据

    • 操作记录:展现本任务的操作记录,操作记录包括:创建、提交、冻结/解冻

    • 冻结/解冻:对当前任务进行冻结/解冻

    • 查看代码:与绘图区域的「查看代码」相同

    • 查看实例:点击后跳转至「周期实例」页面,并按此任务名触发一次搜索,业务日期设置为当天

刷新DAG图后,已经展开的上下有关系、缩放比例将会重置

工作流

工作流的基本操作与普通任务相同,区别体现在以下几点:

  • 绘图区域:与普通任务相同,区别在于,工作流整体体现为DAG图中的一个节点,需要再次点击「展开」icon,在新的弹窗中展开工作流内部节点

  • 右键菜单:

    • 补数据:见上文对「补数据」的描述

    • 操作记录:展现工作流整体的操作记录,若需要查看工作流内部节点的操作记录,需进入工作流内部节点弹窗查看

运行报告

运行报告中显示此任务在最近一段时间内的执行时长分析,若为同步任务,还支持统计读取和写入的数据量、脏数据量

统计图中的最近次数,其中包括了补数据的信息