实战干货:Apache DolphinScheduler 参数使用与优化总结

在使用 DolphinScheduler 进行数据调度开发的过程中,参数的灵活运用是提升任务复用性、动态化执行逻辑的关键。无论是日常跑批任务中的日期处理,还是复杂工作流中的上下游传参,掌握参数的正确使用方式,能极大提高开发效率与任务健壮性。本文基于海豚调度3.1.9版本将系统梳理 DolphinScheduler 中各类参数的使用方法,涵盖内置参数、衍生函数、日期计算、全局变量设置以及跨任务参数传递等核心场景,助你彻底掌握参数使用的"正确姿势"。

内置参数

DolphinScheduler 提供了几个常用的系统级内置参数,主要用于获取调度实例的执行时间。这些参数无需定义,直接引用即可。

基础参数

  • SHELL 案例

但是这种方式在SQL节点下 不适用,SQL下使用衍生内置函数会比较方便

衍生内置参数

为解决 SQL 节点无法使用 参数的问题, D o l p h i n S c h e d u l e r 提供了强大的 {} 参数的问题,DolphinScheduler 提供了强大的 参数的问题,DolphinScheduler提供了强大的 ... 衍生函数语法,支持任意格式的日期拼接与运算,推荐在所有场景中优先使用。

我们定义这种基准参数为 复制代码

简单案例

  • shell案例
  • SQL案例

结果如下:

日期月份增减变化

若需按月计算(考虑大小月、闰年),可使用 add_months() 函数

  • shell 案例,获取前一个月日期

执行结果如下

  • PG案例,下一个月

执行结果如下

其他时期增减

直接加减数字 在自定义格式后直接"+/-"数字

css 复制代码
后 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案例

执行结果如下

  • SQL案例

执行结果如下:

TIPS :一般建议使用衍生内置函数,即$[]的方式,比较直观且通用。

单个任务节点中使用参数

TIPS: 不要在别名的地方使用自定义参数,会触发BUG

例如 下图,

工作流全局参数

当多个任务需要使用相同的自定义变量(如环境标识、项目编号等),可通过工作流全局参数统一管理。

  • 案例 下面三个节点用一个参数

shell案例

bash 复制代码
echo ${my_param}

SQL案例

ini 复制代码
SELECT name  
FROM test_datax_hive 
WHERE 
dt = DATE_FORMAT('$[yyyy-MM-dd-1]', 'yyyy-MM-dd')  
and name = ${my_param}

python案例

dart 复制代码
print('${my_param}')

在每个节点的地方不需要设置参数,只需要在工作流保存的时候设置参数即可。如下图。

工作流参数传递

DolphinScheduler 支持在任务之间传递运行时生成的参数,适用于"上游查询结果 → 下游处理"的场景。

只有SQL和SHELL任务可以往下传递参数。

SQL SHELL PYTHON可以接受上一个节点传递的参数。

下面通过案例来演示实际操作。

  1. SQL向下传递参数

在工作流中新建一个SQL节点。如下图。

  1. 参数名要始终保持相同,这里使用my_name作为参
  2. 自定义参数中也使用my_name作为参数,选择OUT类型,用于往下传递

然后建SHELL类型任务,如下图

参数名保持相同,依旧是OUT类型。

再建一个PYTHON类型任务。如下图

参数名保持相同。

最后,把工作流连起来,如下图

最后看运行日志,来验证。

SQL执行结果

SHELL 运行结果,参数被成功赋值

PYTHON运行结果,参数被成功赋值

  1. SHELL向下传递参数

创建shell脚本,参数名要一致。

${setValue(key=value)} 的语句,key 为对应参数的 prop,value 为该参数的值。

在SQL节点接收参数

参数名保持一致。

PYTHON任务中接收参数

执行结果:

  • SHELL
  • SQL
  • PYTHON

参数使用总结

  1. IN 表示局部参数仅能在当前节点使用
  2. OUT 表示局部参数可以向下游传递。参数优先级:DolphinScheduler
  3. 参数的优先级从高到低为:本地参数 > 上游任务传递的参数 > 全局参数
相关推荐
Georgeviewer5 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
腻害兔6 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
GIR1237 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
明志数科7 小时前
手持式机器人数据采集方案的生态化演进:从开源工具到数据交易
机器人·开源
神奇霸王龙8 小时前
GB/T 46886 闭环屠夫:5 旗舰多模态 LLM 工业质检实测
人工智能·计算机视觉·ai·开源·ai编程·本地部署
南讯股份Nascent8 小时前
洽洽全域会员项目启动会圆满召开
大数据·人工智能
大郭鹏宇8 小时前
基于 LangGraph 构建智能分诊系统(一):项目概述与环境搭建
大数据·人工智能·microsoft·langchain
冬奇Lab8 小时前
开源项目第165期:superfile — 颜值与效率并重的现代终端文件管理器
开源·资讯
fthux9 小时前
“装闭”,让装修套路“装”不下去
人工智能·ai·开源·github·open source
天天爱吃肉821812 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车