当前位置: 首页 > news >正文

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

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

内置参数

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

基础参数

  • SHELL 案例

d8f093fdbda77c78ec551a42fb0bc5fd

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

衍生内置参数

为解决 SQL 节点无法使用 ${} 参数的问题,DolphinScheduler 提供了强大的 $[...] 衍生函数语法,支持任意格式的日期拼接与运算,推荐在所有场景中优先使用。

简单案例

  • shell案例

  • SQL案例

aa1b5297c428957afe4ab2abd14b2e0e
结果如下:

47a5b0f03689bbe97cc2e01ed0ff7cdc

日期月份增减变化

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

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

7a77e5d4aab26156a4c5ddac8a1abefe

执行结果如下

a87f114a006d47b88baf019e3e68599f

  • PG案例,下一个月

a887fc6a5541c34837d0f156f51143ab

执行结果如下

d6fc84bc43b500fc9129a262a6f68f4e

其他时期增减

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

后 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案例

6961f42480a4f6de9058a85ecc0b18cf

执行结果如下

4244d6fcb9ca757ae10234d0720310e1

  • SQL案例

f0a4892e7d30bbd09993eb7c47d24150

执行结果如下:

fd0c3b4b0cc1d2a3aa2d30e1f909383a

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

单个任务节点中使用参数

b26ad39efd173ed70160e47dc364f671

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

例如 下图,

9603f3f2ba7128d4c10f012ac38219fb

工作流全局参数

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

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

shell案例

echo ${my_param}

SQL案例

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

python案例

print('${my_param}')

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

10d49b1775af3cf38c5bd57f6a2a2db5

工作流参数传递

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

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

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

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

  1. SQL向下传递参数

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

a7560386863314f05fae4cc8d674cd78

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

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

abfb9cc8a333e8a5546db2fe51461320

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

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

2d6a4d7ac630785c006c5bf194007fef

参数名保持相同。

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

22f3ae410ce5273ecd7bc5b55bd00438

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

SQL执行结果

1c524169cb7dc70bed38acc2849bc454

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

f2359c19d65761dbed67529b1f6eb3ab

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

  1. SHELL向下传递参数

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

0903d5d08c5bf5718cd5672d538f4ab2

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

在SQL节点接收参数

3d17d769d9d5330b446525d601d9da35

参数名保持一致。

PYTHON任务中接收参数

e1706743faf2fc12e20ebf5531c7aa8e

执行结果:

  • SHELL

59cc46a61d4248724463fe9c63b552dc

  • SQL

a3412ee294f0e29b624770aae59f16fc

  • PYTHON

702e7a2e296add044c12014a9f46dd29

参数使用总结

  1. IN 表示局部参数仅能在当前节点使用
  2. OUT 表示局部参数可以向下游传递。参数优先级:DolphinScheduler
  3. 参数的优先级从高到低为:本地参数 > 上游任务传递的参数 > 全局参数
http://www.jsqmd.com/news/38486/

相关文章:

  • 代码随想录Day8_字符串
  • 实用指南:Rust Slint实现列表式消息提示(Notification Dialog)源码分享
  • 软件工程团队作业2
  • 逆向基础--数据传输指令xlat push pop lea-lds-les (11)
  • RED 状态
  • EMS4100N芯祥科技USB3.1高速双向模拟开关芯片资料,可pin对pin替代ASW3410
  • Chromium扩展策略绕过漏洞CVE-2025-12436安全分析
  • 让AI替你写用例!Dify+RAG工作流,一键生成覆盖率达90%的测试方案
  • 2025年脱硫除臭菌实力厂家权威推荐榜单:微生物除臭剂/硝化细菌/氨氮去除菌源头厂家精选
  • 图库函数集
  • 国产水质检测仪厂家推荐:采购COD检测仪/总氮/总磷/余氯检测仪的注意事项
  • V4L2的pad连接
  • 2025年11月全自动红外测油仪采购推荐:国产全自动红外测油仪品牌推荐,哪家好?
  • aws的iam
  • 10分钟搞懂!化学人刚需的6大核心期刊
  • 2025-2026年水质测定仪品牌推荐:总磷/总氮/氨氮/COD测定仪哪个品牌好?
  • 副本分片重建
  • 2025年空化液体电辅供热机组定制厂家权威推荐榜单:电锅炉/工业电锅炉/水分子物化供热机组源头厂家精选
  • 详细介绍:STM32 GPIO-------设置成51单片机模式输出
  • 2025高压加速老化/HAST/PCT/热流仪厂家推荐伟煌试验设备,专业可靠!
  • PK6500无源探头在5G基站射频模块测试中的应用方案
  • 2025开窗器/链条/机芯/配件厂家推荐湖州万荣,专业制造品质保障
  • 画图
  • 2025膜结构车棚/景观/体育看台/污水池加盖厂家推荐潍坊乾多,专业建造,品质保障
  • 2025 年 11 月配电柜/配电箱/开关柜厂家推荐排行榜,智能配电系统,低压配电柜,高压开关柜,户外配电箱公司推荐
  • 2025年11月学习平板推荐!学而思凭 AI功能成家长首选
  • 2025年电镜实验室安装订做厂家权威推荐榜单:电镜实验室设计/电镜安装/电镜实验室建设源头厂家精选
  • 激光二极管增透膜技术:提升光学性能的关键方案
  • 【传奇开心果系列】基于Flet框架实现的桌面代码登录验证和SQLite 数据库结合实现数据持久化和多页面导航自定义组件模板特色和达成原理深度解析
  • 自适应动态规划(Adaptive Dynamic Programming,ADP)算法,采用演员-评论家(评价-执行)网络,看这一文即可【非常详细推导,认真推理,包你看得懂】 - 实践