暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

5分钟掌握!DolphinScheduler时间参数动态配置秘籍

海豚调度 2025-04-08
42

点击蓝字



关注我们

在 DolphinScheduler 中,调度时对时间参数的使用非常重要,尤其是当你在数据处理、ETL 任务或其他需要依赖时间范围的任务场景中。DolphinScheduler 允许通过多种方式灵活地配置时间参数,以适应不同的任务调度需求。以下是时间参数在 DolphinScheduler 调度中的常见使用方法:


1

全局参数中的时间


DolphinScheduler 支持在工作流或任务中定义全局参数,时间参数可以作为全局参数进行配置,并在整个工作流或任务执行中使用。

定义时间全局参数:

在工作流配置界面,可以在「全局参数」中定义时间相关的参数。例如,定义一个表示当前日期的全局参数:

  • key:current_date
  • value:$[yyyy-MM-dd]

这样,你可以在任务的脚本中使用 ${current_date} 作为日期参数。

脚本示例:

echo "Current date is ${current_date}"

复制

当工作流执行时,${current_date} 会被解析为实际的日期(如 2024-10-14)。


2

时间窗口参数


时间窗口参数通常用于基于时间范围的数据处理任务,如定时从数据源中读取特定时间范围内的数据。DolphinScheduler 提供了通过内置表达式来动态生成时间窗口参数的方式。

常用的时间窗口参数有:

  • ${startTime}:表示任务的开始时间
  • ${endTime}:表示任务的结束时间

时间窗口表达式示例:

  • ${[yyyy-MM-dd 00:00:00 -1d]}:表示前一天的开始时间(如 2024-10-13 00:00:00)
  • ${[yyyy-MM-dd 23:59:59 -1d]}:表示前一天的结束时间(如 2024-10-13 23:59:59)

这些参数可以在任务脚本中使用,比如在进行前一天数据的批处理时,脚本如下:

startTime=${[yyyy-MM-dd 00:00:00 -1d]}
endTime=${[yyyy-MM-dd 23:59:59 -1d]}

echo "Processing data from $startTime to $endTime"
# 处理数据的命令

复制

动态参数解析:

在任务执行时,DolphinScheduler 会根据调度的时间将时间窗口参数解析为实际的时间值。这让任务能够根据执行时的时间,动态处理不同时间段的数据。


3

Cron表达式


DolphinScheduler 使用 Cron 表达式来配置任务的执行时间或调度频率。Cron 表达式允许用户精确控制任务的调度时间,比如每日执行、每周执行或每隔一段时间执行任务。

Cron表达式示例:

  • 每天的凌晨1点执行任务:
0 0 1 * * ?

复制
  • 每周一的凌晨2点执行任务:
0 0 2 ? * 1 

复制

你可以在调度任务时通过 Cron 表达式定义何时运行任务,适用于定时作业的配置。


4

补数任务中的时间参数


DolphinScheduler 支持对错过执行的历史任务进行补数操作,补数任务通常也涉及到时间参数。使用补数任务时,可以指定某个时间范围,系统会自动按照这个时间范围重新执行任务。

补数任务设置:

  • 可以选择特定的日期范围来补充某个时间段未执行的任务。
  • DolphinScheduler 在补数过程中,会根据补数的时间范围设置合适的时间参数,比如 \({startTime} 和 \){endTime}。


5

时间格式化与操作


DolphinScheduler 提供了一些时间格式化和操作功能,可以在时间参数中进行日期的加减操作。例如:

  • ${[yyyy-MM-dd -1d]}:获取前一天的日期。
  • ${[yyyy-MM-dd HH:mm:ss -7h]}:获取7小时前的时间。

你可以通过这些时间操作灵活设置任务调度的时间范围。例如,处理7天前到今天的数据:

#!/bin/bash
startTime=${[yyyy-MM-dd 00:00:00 -7d]}
endTime=${[yyyy-MM-dd 23:59:59]}

echo "Processing data from $startTime to $endTime"

复制


6

系统内置时间参数


DolphinScheduler 提供一些内置的时间参数,用户可以直接使用这些参数来实现基于当前调度时间的任务:

  • ${system.biz.date}:业务日期,一般表示调度任务的当前日期,格式为 yyyy-MM-dd。
  • ${system.biz.curdate}:当前日期的完整格式,格式为 yyyy-MM-dd HH:mm:ss。

这些内置参数可以在任务脚本中直接调用。例如:

#!/bin/bash
echo "Business date is ${system.biz.date}"

复制


7

时间依赖的任务链


在 DolphinScheduler 中,时间参数不仅可以在单个任务中使用,还可以通过工作流配置时间依赖的任务链。你可以在不同的任务中传递时间参数,使下游任务根据上游任务的时间输出动态生成。


8

函数


  • 加减月份:add_months()

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

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

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

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

  • 加减天数:+-数字

    • 后 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]


9

总结


在 DolphinScheduler 中,时间参数的使用非常灵活,主要用于以下场景:

  • 定时调度:使用 Cron 表达式配置任务的执行时间。
  • 时间窗口:动态生成任务的时间范围,用于数据处理等场景。
  • 补数操作:在错过执行的任务中重新设置时间范围。
  • 时间格式化与操作:提供丰富的时间操作工具,可以进行日期加减运算。
  • 全局参数与系统内置参数:方便在工作流中传递和使用时间信息。

DolphinScheduler 中这些时间参数帮助用户精确控制任务的调度和执行,尤其是在数据处理、定时任务和流式计算场景中。

原文链接:https://blog.csdn.net/youziguo/article/details/142919880





用户案例



网易邮箱 惠生工程  作业帮 博世智驾
蔚来汽车 长城汽车集度长安汽车
思科网讯食行生鲜联通医疗联想
新网银行唯品富邦消费金融 
自如有赞伊利当贝大数据
珍岛集团传智教育Bigo
YY直播  三合一太美医疗
Cisco Webex兴业证券




迁移实战



Azkaban   Ooize(当贝迁移案例)
Airflow (有赞迁移案例)
Air2phin(迁移工具)
Airflow迁移实践



发版消息




Apache DolphinScheduler 3.2.2版本正式发布!
Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
Apache DolphinScheduler 3.1.9 版本发布:提升系统的稳定性和性能




加入社区



关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

📂非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

👩‍💻代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler


你的好友秀秀子拍了拍你

并请你帮她点一下“分享”

文章转载自海豚调度,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论