Skip to content

DolphinScheduler进阶

1. 工作流传参

1.1 本地参数和全局参数

DolphinScheduler支持对任务节点进行灵活的传参,任务节点可通过${参数名}引用参数值。

  1. 本地参数
    本地参数是指只针对单个任务节点有效的参数。

1.2 参数传递

DolphinScheduler支持上游任务节点向下游任务节点传参。目前支持这个特性的任务类型有:Shell、SQL、Procedure。

1.3 参数优先级

一个任务节点引用的参数可能来自三种类型:分别是全局参数 、上游任务传递的参数、本地参数。因为参数的值存在多个来源,当参数名相同时,就需要考虑参数优先级的问题。DolphinScheduler参数的优先级从低到高为:上游任务传递的参数<全局参数<本地参数。

1.4 内置参数

DolphinScheduler提供了一些时间相关的系统参数,方便定时调度使用。

  1. 基础内置参数

    变量名声明方式含义
    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
  2. 衍生内置参数

  • 自定义日期格式: 可以对$[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. 工作流失败重跑

若工作流执行到一半失败了,需要重新启动工作流。重新启动时可选择从起点开始执行,也可选择从断点开始执行。