DolphinScheduler进阶
1. 工作流传参
1.1 本地参数和全局参数
DolphinScheduler支持对任务节点进行灵活的传参,任务节点可通过${参数名}引用参数值。
- 本地参数
本地参数是指只针对单个任务节点有效的参数。
1.2 参数传递
DolphinScheduler支持上游任务节点向下游任务节点传参。目前支持这个特性的任务类型有:Shell、SQL、Procedure。
1.3 参数优先级
一个任务节点引用的参数可能来自三种类型:分别是全局参数 、上游任务传递的参数、本地参数。因为参数的值存在多个来源,当参数名相同时,就需要考虑参数优先级的问题。DolphinScheduler参数的优先级从低到高为:上游任务传递的参数<全局参数<本地参数。
1.4 内置参数
DolphinScheduler提供了一些时间相关的系统参数,方便定时调度使用。
基础内置参数
变量名 声明方式 含义 system.biz.date ${system.biz.date}
日常调度实例定时的定时时间前一天,格式为 yyyyMMdd system.biz.curdate ${system.biz.curdate}
日常调度实例定时的定时时间,格式为 yyyyMMdd system.datetime ${system.datetime}
日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss system.task.execute.path ${system.task.execute.path}
当前任务执行的绝对路径 system.task.instance.id ${system.task.instance.id}
当前任务实例的ID system.task.definition.name ${system.task.definition.name}
当前任务所属任务定义的名称 system.task.definition.code ${system.task.definition.code}
当前任务所属任务定义的code system.workflow.instance.id ${system.workflow.instance.id}
当前任务所属工作流实例ID system.workflow.definition.name ${system.workflow.definition.name}
当前任务所属工作流定义的名称 system.workflow.definition.code ${system.workflow.definition.code}
当前任务所属工作流定义的code system.project.name ${system.project.name}
当前任务所在项目的名称 system.project.code ${system.project.code}
当前任务所在项目的code 衍生内置参数
- 自定义日期格式: 可以对$[yyyyMMddHHmmss]任意分解组合,如$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd]。
- 使用add_months()函数: 该函数用于加减月份, 第一个入口参数为[yyyyMMdd],表示返回时间的格式 第二个入口参数为月份偏移量,表示加减多少个月。
- 直接加减数字: 在自定义格式后直接"+/-"数字,比如后N周为$[yyyyMMdd+7*N]
- 业务属性方式: 在自定义格式后直接"+/-"数字,支持日志格式为所有日期表达式,比如当天:$[this_day(yyyy-MM-dd)],如:2022-08-26 => 2022-08-26
2. 引用依赖资源
有些任务需要引用一些额外的资源,例如MR、Spark等任务须引用jar包,Shell任务需要引用其他脚本等。DolphinScheduler提供了资源中心来对这些资源进行统一管理。资源中心存储系统可选择本地文件系统或者HDFS等。资源中心除了提供文件资源管理功能,还提供了Hive自定义函数管理的功能。
3. 告警通知
Dolphinscheduler支持多种告警媒介,此处以电子邮件为例进行演示。
4. 工作流失败重跑
若工作流执行到一半失败了,需要重新启动工作流。重新启动时可选择从起点开始执行,也可选择从断点开始执行。