开源任务调度平台(Apache DolphinScheduler)——功能介绍——参数

开源任务调度平台(Apache DolphinScheduler)——功能介绍——参数

精选文章moguli202025-01-13 10:56:4921A+A-

官方文档 : 「链接」

版本 : Version 3.1.7

任务中可能出现参数的地方

任务中可能出现的参数选项,任务不同参数也不同

任务参数

描述

任务名称

任务的名称,同一个工作流定义中的节点名称不能重复。

运行标志

标识这个节点是否需要调度执行,如果不需要执行,可以打开禁止执行开关。

描述

当前节点的功能描述。

任务优先级

worker线程数不足时,根据优先级从高到低依次执行任务,优先级一样时根据先到先得原则执行。

Worker分组

设置分组后,任务会被分配给worker组的机器机执行。若选择Default,则会随机选择一个worker执行。

任务组名称

任务资源组,未配置则不生效。

组内优先级

一个任务组内此任务的优先级。

环境名称

配置任务执行的环境。

失败重试次数

任务失败重新提交的次数,可以在下拉菜单中选择或者手动填充。

失败重试间隔

任务失败重新提交任务的时间间隔,可以在下拉菜单中选择或者手动填充。

CPU 配额

为执行的任务分配指定的CPU时间配额,单位为百分比,默认-1代表不限制,例如1个核心的CPU满载是100%,16个核心的是1600%。 task.resource.limit.state

最大内存

为执行的任务分配指定的内存大小,超过会触发OOM被Kill同时不会进行自动重试,单位MB,默认-1代表不限制。该功能由 task.resource.limit.state 控制。

超时告警

设置超时告警、超时失败。当任务超过"超时时长"后,会发送告警邮件并且任务执行失败。该功能由 task.resource.limit.state 控制。

资源

任务执行时所需资源文件。

前置任务

设置当前任务的前置(上游)任务。

延时执行时间

任务延迟执行的时间,以分为单位。

参数分类

  1. 内置参数

1.1.基础内置参数

变量名

声明方式

含义

system.biz.date

${system.biz.date}

日常调度实例定时的定时时间前一天,格式为 yyyyMMdd

system.biz.curdate

${system.biz.curdate}

日常调度实例定时的定时时间,格式为 yyyyMMdd

system.datetime

${system.datetime}

日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss

验证: 通过shell 组件输出内置参数结果

创建一个shell,输入内容为内置参数变量,输出为变量对应的结果

查看日志可以发现内置参数结果可以被正常输出

1.2. 衍生内置参数(目前没找到使用指定日期进行加减的方法,演示默认使用的是系统时间.)

  • 支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数"
  • 我们定义这种基准变量为 $[...] 格式的,$[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等
  • 也可以通过以下两种方式:

1.使用add_months()函数,该函数用于加减月份, 第一个入口参数为[yyyyMMdd],表示返回时间的格式 第二个入口参数为月份偏移量,表示加减多少个月

后 N 年:$[add_months(yyyyMMdd,12*N)]

前 N 年:$[add_months(yyyyMMdd,-12*N)]

后 N 月:$[add_months(yyyyMMdd,N)]

前 N 月:$[add_months(yyyyMMdd,-N)]

验证: 通过shell 组件输出衍生内置参数结果

创建一个shell,输入内容为衍生内置参数变量,输出为变量对应的结果(add_months()函数的第一个参数是日期的格式不是具体的日期值.)

查看日志可以发现衍生内置参数结果可以被正常输出

2.直接加减数字 在自定义格式后直接“+/-”数字

后 N 周:$[yyyyMMdd+7*N]

前 N 周:$[yyyyMMdd-7*N]

后 N 天:$[yyyyMMdd+N]

前 N 天:$[yyyyMMdd-N]

后 N 小时:$[HHmmss+N/24]

前 N 小时:$[HHmmss-N/24]

后 N 分钟:$[HHmmss+N/24/60]

前 N 分钟:$[HHmmss-N/24/60]

验证: 通过shell 组件输出衍生内置参数结果

查看日志可以发现衍生内置参数结果可以被正常输出

全局参数(注:这里定义的 qjcs 参数可以被其它任一节点的局部参数引用。)

  1. 作用域

全局参数是指针对整个工作流的所有任务节点都有效的参数,在工作流定义页面配置。

  1. 使用方式

具体的使用方式可结合实际的生产情况而定,这里演示为使用 Shell 任务打印出前一天的日期。

  1. 创建 Shell 任务

1. 创建一个 Shell 任务,并在脚本内容中输入 echo ${qjcs}。此时 qjcs 则为我们需要声明的全局参数。如下图所示:

2. 保存工作流,并设置全局参数

全局参数配置方式如下:在工作流定义页面,点击“设置全局”右边的加号,填写对应的变量名称和对应的值,保存即可。如下图所示:

3. 点击查看变量可以发现我们设置的参数

4. 任务实例查看执行结果

进入任务实例页面,可以通过查看日志,验证任务的执行结果,判断参数是否有效。

本地参数

  1. 作用域

在任务定义页面配置的参数,默认作用域仅限该任务,如果配置了参数传递则可将该参数作用到下游任务中。

  1. 使用方式

本地参数配置方式如下:在任务定义页面,点击“自定义参数”右边的加号,填写对应的变量名称和对应的值,保存即可。

如果要在单个任务中使用参数,请参阅通过自定义参数使用

如果要在任务中使用配置参数并在下游任务中使用它们:

如果你只是想要简单使用,且不使用自定义参数, 请参阅 通过 setValue 和自定义参数 export 本地参数;

如果想要使用自定义参数, 请参阅 通过 setValue 和自定义参数 export 本地参数;

如果想要使用 Bash 参数, 请参阅 通过 setValue 和 Bash 环境变量参数 export 本地参数;


注:本地参数可以在当前任务节点的工作流中,设置其为 OUT 则可以传递给下游的工作流使用,可以参考:参数传递

  1. 任务样例

3.1 通过自定义参数使用

本样例展示了如何使用本地参数,打印输出当前日期。创建一个 Shell 任务,并编写脚本内容为 echo ${bdcs}。点击配置栏中的自定义参数,配置如下图所示:

参数说明:

bdcs:参数名

IN:IN 表示局部参数仅能在当前节点使用,

OUT: 表示局部参数可以向下游传递

DATE:数据类型,日期

$[yyyy-MM-dd]:自定义格式的衍生内置参数

保存工作流并运行,查看 Shell 任务输出日志。

3.2. 通过setValue export 本地参数(使用 '${setValue(set_val="通过setValue export 本地参数")}' 或者 '#{setValue(set_val="通过setValue export 本地参数")}' 设置,下游都可以通过echo '${set_val}' 获取对应的值)

如果你想简单 export 参数然后在下游任务中使用它们,你可以在你的任务中使用 setValue,你可以将参数统一在一个任务中管理。在 Shell 任务中使用语法 echo '${setValue(set_val="通过setValue export 本地参数")}'(不要忘记单引号) 并添加新的 OUT 自定义参数来 export 它。

注意:

set_val : 只是起了一个名字,可以随意指定,保证在自定义参数中的名字一致就行;

在下游任务中使用语法 echo '${set_val}' 在获取设定的值。

3.3. 通过setValue和自定义参数 export 本地参数(只有使用 '#{setValue(set_val="通过setValue export 本地参数")}' 设置,下游才可以通过echo '${set_val}' 获取对应的值)

如果你想用自定义参数而不是常量值来实现参数 export,并下游任务中使用它们,你可以在通过 setValue 和 自定义参数实现,当你想改变参数的值时可以直接改变 “自定义参数”模块中的值,这让程序更加容易维护。您可以在 Shell 任务中使用语法 echo "#{setValue(set_val_param1=${val})}"(如果你想要将任何 变量赋值给 setValue 请不要忘记使用双引号)并添加新的 IN 自定义参数用于输入变量 val 和 OUT 自定义参数用于 export 参数 set_val_param1。

在下游任务中使用语法 echo '${set_val_param1}' 在获取设定的值。

3.4.通过setValue和 Bash 环境变量参数 export 本地参数

如果你想用 bash 变量而不是常量值 export 参数,并在下游任务中使用它们,你可以在通过 setValue 和 Bash 变量实现,它更灵活,例如你动态获取现有的本地 或 HTTP 资源获取设定变量。 您可以使用类似的语法

在下游任务中使用语法 echo '${set_val_var}' 在获取设定的值。

3.5.同一个任务中,在自定义参数既添加了非常量参数,又添加了自定义in/out常数参数时,out设置的常量值无法传递到下游.

解决方法:

将常数与非常数的定义分开,在下游任务中均可调用常数参数了

示例 :

输出结果

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2