DAG作业 #
DAG作业概述 #
DAG作业是以多个TASK任务作为基础,以DAG(有向无环图)形式构成构建的复杂ETL作业。目前支持大量可自由编程的TASK,一个TASK为DAG作业下的最小执行单元。可通过连线的方向,关联若干个TASK组成一个DAG作业配置。
作业通用配置 #
参数 | 描述 |
---|---|
任务名称 | 任务ID,在单个作业内唯一,支持中文 |
任务描述 | 任务作用的简单描述 |
所属标签 | 用于判断作业执行的节点,默认为空 |
超时重试次数 | 作业超时重试的次数,默认0,则不进行重试 |
失败重试次数 | 作业失败后进行的重试次数,默认0,则不进行重试 |
重试间隔 | 每次重试的时间间隔,默认600秒 |
超时时间 | 任务运行超时时间,默认1800秒 |
成功通知 | 任务成功后发送对应邮件通知,默认”是“ |
通知邮箱 | 任务完成后(含成功、失败等状态)邮件所发送到的邮箱 |
调度 #
对已配置完的DAG作业配置对应的调度(Quartz方式),会根据Quartz设置时间定时启动DAG作业,并按照TASK先后依赖顺序,启动并执行对应的任务。目前的DAG作业支持的调度配置基于CRON表达式,相关参数如下:
参数 | 描述 |
---|---|
调度描述 | 简单描述调度的用途 |
调度时间 | Quartz时间配置 |
负责人 | 作业负责人,用于“负责人统计” |
超时时间 | 调度超时时间,默认1800秒 |
通知邮箱 | 由于失败告警、成功提醒,多个使用“;”分隔 |
Java Task #
自定义java程序,但是需要引用系统提供的类
具体见程序说明,支持的参数说明:
a) JVM参数:JVM的参数,可以用于指定内存等
b) JAR包:运行的jar包,应该讲依赖jar包全部打包在一起(fat jar)
c) 运行类:运行哪个类的全路径
d) 运行队列:如果运行的yarn应用,则可以读取该队列信息,目前并未强制,看用户自己代码实现
e) 自定义参数:自定义参数,json格式
f) 环境变量:json格式
SHELL Task #
系统支持shell,参数说明:
a) zip/sh文件:如果是单个shell脚本,则直接上传即可;如果shell中调用了其他脚本,则可以将相关的代码打包成zip
b) 执行的sh:对于打包成zip的需要指定运行哪个shell
c) 运行参数:脚本参数,按照空格分隔
d) 环境变量:json格式
SQL Task #
直接在界面进行HIVE的SQL(HQL)编写。参数说明:
a) 添加文件:添加jar/文件,则在执行SQL之前会执行“add jar …、add file …”,这样可以方便的添加需要的udf或者script脚本
b) 运行队列:指定运行在yarn时的队列名
c) 额外参数:填写额外参数,则会在执行SQL之前执行“set hivevar:{k}={v}”,格式为json
d) SQL:填写HQL,支持多个语句,每个语句结束应该按照“;换行符”分隔,目前SQL中不支持注释。
注意,一般编写的语句是“insert into table … select …”,这样才能将结果保存在HIVE表中。同时可以在任务中建表(create table),如果非HIVE临时表,则要在建表语句中加上“if not exists”,从而避免第二次运行报错。
KETTLE Task #
用户同时也可以使用kettle在pc上配置好kettle的job/transformation,将配置好的kjb/ktr导出,参数说明:
a) zip/kjb/ktr文件:kjb是kettle job,ktr是kettle transformation。如果配置中有依赖其他代码,则可以将相关代码一起打包成zip
b) 执行的kjb/ktr:对于zip包,则需要指定
c) 运行参数:脚本参数,按照空格分隔
d) 环境变量:json格式
数据同步 Task #
目前支持“关系数据表”导入“HIVE表”、“HIVE表”导出“关系数据表”、“FTP文件”导入“HIVE表”,详细参数:
a) 来源类型 – 流向类型:选了“关系数据库”、“FTP”,则去向只能选择“HIVE”;反之亦然。
b) 关系数据库说明:
1) 库表:选择“关系数据库”和“HIVE”对应的库和表
2) 表字段:关系数据库的字段可以忽略(不导入),HIVE表对应的字段必须包含关系表选择的字段
3) 抽取控制:“关系数据库”的抽取可以指定where条件,进行并行导入时的分割数据的字段,并且可以指定并行数。“HIVE”的抽取则可以指定分区。
c) FTP说明:
1) 选择主机
2) 填写FTP路径,支持“特殊时间字符串”
3) 如果FTP路径是目录,则可以填写需要导入文件的后缀,默认是“*”
4) 文件的分隔符,默认是“\t”
5) 是否递归,表示如果是目录是否导入其全部子目录中的文件
d) 加载控制:“关系数据库”的加载可以是否需要预先清空数据以及清空的where条件。“HIVE”的加载则需要指定分区。
数据质检 Task #
数据质检目前支持基于以SQL形式对多个表进行数据对比,用户可在界面上以SQL形式查询,对比多个SQL结果,系统会自动输出对应的数据不一致的报告。
a}数据源配置
1)选择数据源:系统会读取数据源背后的JDBC链接信息,以此决定提交SQL查询的集群、账号
2)SQL输入框:此处可任意输入查询类SQL,可支持单个集群内多表的查询
3)添加按钮:增加一组选择数据源和SQL输入框配置
b)对比配置
1)基准字段:读取SQL中存在的字段进行选择,仅可选择多个SQL中共有的字段。基准字段作为多份数据质检的对比维度(常见如城市、品牌等),主要用来作为多份数据的join条件。
2)比较字段:读取SQL存在的字段内进行选择,仅可选择多个SQL中共有的字段。对比字段为多分数据质检的对比指标(常见为销售额、数据条数等),主要用来作为实际对比值
c)任务输出
1)文件名:用户自行命名报告的文件名,报告由对比报告和异常数据两部分组成。其中异常数据输出前10万条
调度检测 Task #
调度检测主要用于判断系统此前相关作业当前的完成状态,根据不同的作业状态执行后续不同的TASK调度,类似状态机的作用,可以支持多个作业判断,多个作业判断之间为“且”关系
相关配置参数说明:
a)任务名称/id:需要判断的作业ID或名称
b)状态:下拉选项,支持了目前系统各个作业状态,常见如成功、失败等
c)回溯周期配置:检测的任务需要在此时间段内出现过对应的状态的情况,常用于周期性任务的判断
作业引用 Task #
引用作业可读取系统内各个作业(包括批处理作业)的配置进行执行,可在一个DAG作业内引入另外一个DAG作业。需要注意,引用的DAG之中,不能出现引用自身等死循环操作。
相关配置参数说明:
a)任务名称:TASK名称,仅支持中英文和下划线
b)任务备注:用于备注说明
c)任务类型:工场作业=批处理作业;海纳任务=DAG作业
d)任务ID:对应的批作业ID或者DAG作业ID