Apache DolphinScheduler 海豚调度器自定义时间参数
在Apache DolphinScheduler 海豚调度器(本文简称:小海豚) 官网中,我们看到其自定义时间的参数是这样介绍的
1.支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数" 或指定 "常量"。
2.我们定义这种基准变量为 [...] 格式的,[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等
3.也可以使用以下格式:
* 后 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]
以上是可以满足大部分时间需求,但有些我们会受到常规java逻辑思维影响,导致不能很好的使用这些自定时间。
比如:$[yyyyMM-1],首先我们会受到java思维的影响,认为yyyyMM-1就是当上一个月的年月时间。实际上,$[yyyyMM-1]表示的是昨天的年月。
一般小海豚自定义时间格式有两种:
1.调用函数add_months()函数的:这种是用来加减月份的。
这种有两个参数,第一个是返回时间的格式(如yyyyMM,202012),第二个加减多少个月(如,输入-2,则代表前2个月的时间)
2.直接+-数字的:这种用来加减天数的。
这种直接输入数字的,不管你输入的时间格式是yyyyMM或者是HHHHmmss都无所谓,这个数字只代表加减多少天(比如-2,就代表两天前的时间)
他的自定义时间规律是这样的:先进行加减月/日计算,再将其转化为指定格式输出。
就拿上述的$[yyyyMM-1]来说,它是先对当前时间进行减去一天,然后再转换为yyyyMM的格式输出。打个比方:今天是2020年03月02日,那么他会“2020年03月02日”减去一天,就得到“2020年03月01日”这个数据,接着再转化为yyyyMM输出,输出202003。
我们java传统意义上的yyyyMM-1是指当前月份的上个月。比如,今天是2020年03月02日,yyyyMM-1之后会输出202002,这是java编程中的思维,跟小海豚的思维还是有点不一致。
小海豚自定义时间参数中遇到的问题:
我在大数据批处理中,有时候会碰到一些每天更新的月表数据(比如有张统计累计会员人数的月表,用于统计当月的累计会员人数,每天都在更新并同步到BI可视化系统中)(其实更应该叫日表,但需求就是统计周期为月,但每天要更新数据)
小海豚会在今天的凌晨拉取昨天的数据进行计算,将昨天的数据同步到可视化系统中。
一开始我是按照正常的写法,让数仓将$[yyyyMM] (当月)的数据同步到BI可视化系统中并每天更新。一开始是没问题的,都会同步当月的数据,毕竟今天是2020年03月02日获取的就是202003(2020年03月)
但到了月初的第一天,就会出现问题。
比如2020年03月31日,$[yyyyMM]输出202003,会将2020年03月的数据同步到可视化系统(此时小海豚还是抽取昨天2020年03月30日的数据进行累加计算出数据),此时同步是没问题的。
到了2020年04月01日,小海豚会抽取昨天(2020年03月31日)的数据进行累加,按道理更新的应该是昨天3月份的数据,但是!!!$[yyyyMM]输出的是202004,而此时4月份没有数据,因此没有更新!!!
到了2020年04月02日,小海豚抽取昨天(2020年04月01日)的数据进行4月份累加,$[yyyyMM]输出的是202004 ,更新4月份数据。
此时从数仓同步到可视化系统的3月份数据就会少了31日,导致明明数仓数据正确,可是到了可视化系统时就不准了。此时不理解的人就会在骂小海豚有bug,可你输入的指令$[yyyyMM]获取的是今天的月份,你的业务要求你更新昨天的月份。
正确做法是将$[yyyyMM]替换成$[yyyyMM-1],$[yyyyMM-1]代表昨天的年月,跟我们数仓抽取昨天的数据进行计算业务吻合。
Apache DolphinScheduler 海豚调度器自定义时间参数相关推荐
- Dolphinscheduler/海豚调度器的安装
Dolphinscheduler的安装 一.预安装 1.1 安装节点规划 1.2 软件下载 二.安装 2.1 创建dolphinscheduler用户 2.2 安装Java 2.3 安装Zookeep ...
- 海豚调度器(dolphinscheduler)再次使用,添加钉钉预警
1,首先我们部署是海豚调度器 1.3.8 版本,由于页面只有邮件预警,所以在了解源码的同时,需要添加钉钉预警 2,说明,这一块是同事搞的,不是我搞的,新版本的dolphinscheduler已经有了钉 ...
- DolphinScheduler海豚调度教程
DolphinScheduler 教程 (一)入门指南 简介 关于Dolphin Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统.解决数据研发ET ...
- 海豚调度器初次使用 .......
一,部署部分省略,官网有详细的教程,顺着步骤做就好了. 二,先说说调用spark运行wordcount案例流程 1,编写代码 package com.sjb.exampleimport org.apa ...
- dolphinscheduler海豚调度升级代码改造-UpgradeDolphinScheduler
dolphinscheduler数据升级代码改造 背景 升级代码改造 测试 准备工作 执行upgrade-dolphinscheduler.sh脚本 日志报错 修改代码再次验证 日志不报错 查看页面验 ...
- dolphinscheduler海豚调度是什么?
Apache DolphinScheduler是一个分布式和可扩展的开源工作流协调平台,具有强大的DAG可视化界面,下面如扩展插件,服务边界说明等几个方面介绍一下如何使用DolphinSchedule ...
- springmvc拦截器对请求参数解密_springMvc使用拦截器自定义处理参数
前言: 这两天开发遇到一个需求,那就是在后台接收到请求后,能不能自定义添加参数呢? 我们知道request中是能获取到前端获取的参数的,但是在后端不能再往parameter中添加参数了,虽然可以使用r ...
- 如何在CDH5.16.2中部署海豚调度器Apache Dolphin Scheduler 1.2.0
Apache Dolphin Scheduler 组件介绍 分布式易扩展的可视化DAG工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 官网 : h ...
- Apache DolphinScheduler——开源大数据调度器神器
目 录 1. 简 介 1.1 概 念 1.2 优缺点 1.3 哪些人适合DolphinScheduler(纯属个人观点) 1.4 社区 2. 集群模式安装详解(比官网还细,个人手把手实践避坑) 2.1 ...
最新文章
- Vivado 随笔(6) Timing Summary 相关讨论(一)
- 开机后需要手动打开mysql_mysql解压版一键配置
- 收到贺卡和礼物的处理方法
- 华东交通大学2017年ACM双基程序设计大赛题解
- Docker删除镜像
- 全国计算机等级考试题库二级C操作题100套(第49套)
- 看完这篇文章,会让你对电容的作用更明白!
- 财付通 android api,财付通API接口文档.doc
- 判定两个点是否在一条直线的同一侧_计算几何01-判定两条线段是否相交
- SpringCloud工作笔记070---SpringCloud中使用Redis存储List类型数据
- 再谈table组件:固定表头和表列
- 1-csv文件,解决数字不全或者数组+e的显示的问题
- php读取excel最佳方案,用PHP读取excel(转)
- 谷歌地图 街景 api_Google使街景在地图中更加突出
- matlab 电力电子仿真电路,基于Matlab的电力电子电路仿真方法
- Kubernetes Events介绍(中)
- Task watchdog got triggered错误
- 360漏洞修复出现网管版 将探路企业级市场?
- 2018最新微信小程序经典案例开发视频教程合集
- Python 安装wheel.whl文件