azkaban参数传递

azkaban通过WEBUI界面参数传递 azkaban通过WEBUI界面参数传递 1、首先创建一个测试任务流用于参数传递的测试 2、点击执行流按钮弹出如下界面 3、点击流参数按钮 通过key-value的形式添加参数,我这里的参数变量是ui_test,值是一个azkaban内置的时间函数 4、点击schedule按钮来设置这个工作流的执行时间(这样每次执行可以把设置的参数传递进去) 5、这里选择了默认设置,即每分钟执行一次,点击schedule 这里顺便看一下我的job文件是如何来接收参数的 test1.job test2.job 这 阅读详情

参数传递是调度字体工作流运行时非常重要的一部分,工作流的执行,单个作业的执行,多个工作流之间的依赖执行,历史任务重算,都涉及到参数传递和同步。

 

1 参数类型综述

azkaban的工作流中的参数可以分为如下几个类型:

  • Azkaban UI 页面输入参数
  • 环境变量参数
  • job作业文件中定义的参数
  • 工作流的用户定义的属性文件,上游作业传递给下游的参数
  • 工作流运行时产生的系统参数
  • job的common参数

参数类型与其对应的参数范围如下:

参数类型作用域
UI 页面输入参数 ,即工作流参数flow全局有效
工作流ZIP压缩包中的属性文件(.properties结尾)flow全局有效,zip文件目录以及子目录有效
工作流运行时参数flow全局有效
环境变量参数flow全局有效
job的common参数job内局部有效
JOB文件中定义的参数job内局部有效
上游作业传递给下游的参数job内局部有效

 

2. job 参数简介commom参数

除了type,command,dependencies三个参数外,还有如下一些保留参数可以为每个job配置

参数说明
retries失败的job的自动重试的次数
retry.backoff重试的间隔(毫秒)
working.dir指定命令被调用的目录。默认的working目录是executions/${execution_ID}目录
env.property指定在命令执行前需设置的环境变量。Property定义环境变量的名称,因此 env.VAR_NAME=VALUE就创建了一个$VAR_NAME环境变量,并且指定了它的VALUE
failure.emailsjob失败时发送的邮箱,用逗号隔开
success.emailsjob成功时发送的邮箱,用逗号隔开
notify.emailsjob成功或失败都发送的邮箱,用逗号隔开

一个flow的email属性,只会取最后一个job的配置,其他的job的email配置将会被忽略。

 

3. job之间的参数传递

先看官网的描述:

Parameter Passing
There is often a desire to pass these parameters to the executing job code. The method of passing these parameters is dependent on the jobtype that is run, but usually Azkaban writes these parameters to a temporary file that is readable by the job.
The path of the file is set in JOB_PROP_FILE environment variable. The format is the same key value pair property files. Certain built-in job types do this automatically for you. The java type, for instance, will invoke your Runnable and given a proper constructor, Azkaban can pass parameters to your code automatically.
Parameter Output
Properties can be exported to be passed to its dependencies. A second environment variable JOB_OUTPUT_PROP_FILE is set by Azkaban. If a job writes a file to that path, Azkaban will read this file and then pass the output to the next jobs in the flow.
The output file should be in json format. Certain built-in job types can handle this automatically, such as the java type.

意思是:JOB_OUTPUT_PROP_FILE和JOB_PROP_FILE都是一个环境变量,指向文件路径。

参数传入:

上游节点把需要输出的值以json的格式写入JOB_OUTPUT_PROP_FILE文件,azkaban以job执行过程中,上游job传递进来的临时参数,运行时参数,项目中配置文件的参数,job定义中参数等 都保存在 ${JOB_PROP_FILE}文件中,保存格式为key=value。执行job的中shell命令时,可以作为参数传递。

参数传出:

一个azkaban job执行结束,可以将一些参数写入到${JOB_OUTPUT_PROP_FILE}文件 中,azkaban会将这些参数传递到下游依赖的的job的参数文件${JOB_PROP_FILE}文件中,供下游job引用。写入到${JOB_OUTPUT_PROP_FILE}文件中参数需要是json格式的,否则会报json解析错。下游节点就可以在JOB_PROP_FILE中看到key-value形式的输出,用${key}的方式使用变量。

 

举例:

baseflow.flow

复制代码

#baseflow.flow
nodes:
  - name: jobB
    type: command 
    dependsOn:
       - jobA
    config:
       command: sh commandB.sh "${firstName}" 

  - name: jobA
    type: command
    config:
       command: sh commandA.sh

复制代码

 

commandA.sh

#!/bin/bash
echo '{ "firstName":"John" , "lastName":"Doe" }' >> ${JOB_OUTPUT_PROP_FILE}

 

commandB.sh

#!/bin/bash
cat ${JOB_PROP_FILE} >> /root/azkaban.txt
echo $1 >> /root/azkaban.txt

 

jobB依赖JobA,jobA执行完成后,会一串json内容到${JOB_OUTPUT_PROP_FILE}指向的文件中,JobA执行完成后,jobB才可以执行,等job执行时,会将jobA输出的内容写入到/root/azkaban.txt,并追加参数中的firstName写入到文件中,注意第一个参数只能通过shell调用的方式来传递。

 

4 job参数之runtime属性

runtime属性是在job运行期间自动被添加的

参数

说明

azkaban.job.attempt

job重试次数,从0开始增加

azkaban.job.id

运行的job name

azkaban.flow.flowid

运行的job的flow name

azkaban.flow.execid

flow的执行id

azkaban.flow.projectid

工程id

azkaban.flow.projectversion

project上传的版本

azkaban.flow.uuid

flow uuid

azkaban.flow.start.timestamp

flow start的时间戳

azkaban.flow.start.year

flow start的年份

azkaban.flow.start.month

flow start 的月份

azkaban.flow.start.day

flow start 的天

azkaban.flow.start.hour

flow start的小时

azkaban.flow.start.minute

start 分钟

azkaban.flow.start.second

start 秒

azkaban.flow.start.millseconds

start的毫秒

azkaban.flow.start.timezone

start 的时区

 

5 job参数之参数继承

后缀为.properties的文件将会作为参数文件加载,并且为flow中每个job所共享,属性文件通过目录分层结构继承。

比如,在zip包中有以下结构

复制代码

system.properties 
baz.job 
myflow/myflow.properties 
myflow/myflow2.properties 
myflow/foo.job 
myflow/bar.job

复制代码

system.properties是全局的属性,将会被baz.job和myflow目录下的foo.job和bar.job使用,但是baz.job不会继承myflow.properties和myflow2.properties的属性,因为是它的下层.

 

6 job参数之参数替换

azkaban支持参数替换;替换参数样式: azkaban会替换{}中的参数。无论${parameterName} 在job file中或者在参数文件中或者运行时参数发现,都可以被替换为对应的值。

shared.properties 

# shared.properties 
replaceparameter=bar
myjob.job
# myjob.job 
param1=mytest 
foo=${replaceparameter} #${replaceparameter}会替换为bar 
param2=${param1} # ${param1} 会被替换成mytest。

前面这个例子,在myjob 作业运行前,foo 会被赋值为bar , param2会被赋值为mytest.
注意:参数名不能有空格,标点符号等。

 

 7 shell动态传参

 

 

 

azkaban中的shell 作业,如何接收从webUI传递的参数?

7.1 UI页面输入参数定义

ui_test=test111111111

7.2 在job文件myjob.job指定

##作业定义文件UI输入参数接收:
job_param4=${ui_test}

##作业定义文件脚本命令行引用UI输入参数:
sh test_azkaban_job.sh "${job_param4}"

 

7.3 shell test_azkaban_job.sh 的内容

vim  test_azkaban_job.sh

echo "inputparamter:$1"  #接收job文件中传递的参数。

 

FAQ1:在页面手动执行前面的job时,如果UI参数ui_test在job执行没有输入,会执行失败。异常信息如下:

hello ERROR - Failed to build job executor for job hello Could not find variable substitution for variable(s) [param4->ui_test ]

在定时调度任务指定时,需要指定工作流参数flowParameters :ui_test,避免该错误。

 

7.4 shell中使用参数的注意事项

在UI页面重新输入运行时参数时,可以覆盖系统默认生成的参数值。运行时参数,和UI输入的参数,都可以认为是全局参数,在整个工作流的作业配置中,都可以通过 ${参数名} 的方式引用使用。

  • 在shell 中直接引用 公共参数,运行时系统参数,UI输入参数,是无效的。
  • 在shell中只能直接使用环境变量;
  • 公共参数,运行时系统参数,UI输入参数能只通过shell的脚本参数的方式传递进来。
  • job文件中定义的环境变量参数,可以在shell脚本中直接引用,但只对当前job有效。

 

 

8 reference

1. https://www.cnblogs.com/chenmingjun/p/10506488.html

Azkaban任务动态参数小结 文章目录1. 数仓任务调度案例2.动态传参任务案例 1. 数仓任务调度案例 每日凌晨,我们会将业务数据库同步到数仓中,并进行清洗和相关指标的计算,然后导出到PostgreSQL中给业务系统使用,整个过程可以通过Azkaban进行调度执行。 job编写 job内容是执行对应的shell脚本,执行对应的任务,比如hive的脚本等。job的执行顺序依靠dependencies来描述,A 依赖B,则B先执行。 多个依赖用逗号分隔。 import_log.job type=command do_date=${d 阅读详情

相关推荐

Azkaban参数传递避坑指南:从JOB_PROP_FILE到Shell脚本的动态传参详解

本文深入解析Azkaban参数传递机制,从JOB_PROP_FILE到Shell脚本的动态传参全链路实践。详细介绍了参数生成、传递和使用的关键技巧,包括条件工作流中的参数传递策略,帮助开发者避免常见陷阱并优化性能。

weixin_33713350的博客 577

hadoop学习笔记7-Azkaban

一.Azkaban基础 国内翻译成了阿兹卡班 1.为什么使用azkaban hadoop大数据处理一般具有延迟性,适合定时调度。而azkaban,就是一个定时调度工具 那为什么不用crontab? 简单的定时你是可以用crontab,那复杂的呢?比如我任务a依赖于任务b,任务b又依赖于任务c,你怎么执行? 所以,azkaban就是一个适用于执行工作流的定时调度系统 2.azkaban执行流程 3.azkaban可以兼容所有版本的hadoop (反正都是命令执行)type一共就两种.

qq_35653822的博客 1036

azkaban调用shell传两个参数先后顺序

azkaban调用shell传递两个参数。

dove's blog 4577

Azkaban作业参数使用介绍

Azkaban中的参数详解 参数传递是调度字体工作流运行时非常重要的一部分,工作流的执行,单个作业的执行,多个工作流之间的依赖执行,历史任务重算,都涉及到参数传递和同步。 azkaban的工作流中的参数可以分为如下几个类型: 1: Azkaban UI 页面输入参数 2: 环境变量参数 3:job作业文件中定义的参数 4:工作流的用户定义的属性文件,上游作业传递给下游的参数 5:工作...

yilulvxing的博客 8194

Azkaban参数传递避坑指南:从JOB_PROP_FILE到动态UI传参的完整配置流程

本文详细解析Azkaban 3.51.0版本中的参数传递机制,涵盖从JOB_PROP_FILE到动态UI传参的完整配置流程。通过条件工作流和多环境配置实战,帮助开发者避免常见陷阱,构建健壮的参数管理体系,提升数据流水线的灵活性和可维护性。

weixin_28683065的博客 130

3、azkaban-3.51.0 条件工作流flow和参数传递

3、azkaban-3.51.0 条件工作流flow和参数传递 网址:https://blog.youkuaiyun.com/chenwewi520feng/article/details/130747271 介绍azkaban的条件工作流以及工作流之间的参数传递示例

将一个无效参数传递给了将无效参数视为严重错误的函数_azkaban动态传入作业参数参考手册...

快速上手-shell类型job参数传递2.shell类型的job的参数传递azkaban中的shell 作业,如何接收从webUI传递的参数?step1: UI页面输入参数定义:ui_test=test111111111step2:在job文件myjob.job指定:##作业定义文件UI输入参数接收:job_param4=${ui_test}##作业定义文件脚本命令行引用UI输入参数:sh tes...

weixin_39695672的博客 1259

2006NOIP普及组真题 4. 数列

从上述推理中,我们发现要输出的幂次和中的第 N 项(也就是幂次和中的序号N),对应的二进制位数和幂次和对应的二进制位数相同。当 k=3 时,k的幂次为1, 3, 9, 27, 81…,即第0位,第2位均为1,转成 k 进制(k=3)时。,即第2位,第3位均为1,转成 k 进制(k=3)时。转成 k 进制(k=3)时的幂次和为。,即第0位,第1位,第2位均为1,(即第0位,第1位,第2位均为1)N=12时,12的二进制是。(即第0位,第2位均为1)(即第2位,第3位均为1)结论:这道题就变成了。

weixin_40252159的博客 1514

azkaban mysql参数_azkaban job参数传递

Parameter PassingThere is often a desire to pass these parameters to the executing job code. The method of passing these parameters is dependent on the jobtype that is run, but usually Azkaban writes ...

weixin_33188789的博客 224

使用 pip 安装 pygame 遇到的问题

今天尝试学习使用 pygame 时,按照我的习惯一发 pip install 下去,本以为很简单的事情,没想到遇到了不少问题,顺手记录一下。 0x01. 无法找到 “SDL.h” 文件 pygame 是使用 SDL 库写就的游戏框架,自然强依赖于 SDL,我的 python@3 是使用 macOS 的 brew 管理器直接安装的,可能由于不是编译安装的问题,缺少了这个库,继续使用 brew 安...

Mitscherlich的博客 8621

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1082

Azkaban 3.51.0 避坑指南:条件工作流和参数传递的 5 个常见错误与最佳实践

本文深入解析Azkaban 3.51.0中条件工作流和参数传递的5个常见错误与最佳实践,涵盖条件表达式语法、参数传递格式、参数继承优先级等关键问题。通过典型错误案例和解决方案,帮助开发者高效避坑,提升工作流编排的稳定性和可维护性。

weixin_33696822的博客 295

【随机过程】Markov Chain的定义及发展历程与实际应用

本模块书写的初衷:由于在学习张波张景肖等学者所著的《应用随机过程》存在着不甚了解的知识点,经过个人查找资料并整理、分享,希望能够为有同样疑惑的读者贡献绵薄之力,同时如果个人编写内容有错误,恳请读者指正。本文为对《应用随机过程》第42页中Markov Chain基本概念的补充。1.Markov Chain的定义俄国数学家 Andrey Andreyevich Markov 研究并提出一个用数学方法就能解释自然变化的一般规律模型,被命名为马尔科夫链(Markov Chain)。

qq_49657150的博客 3746

Azkaban 3.51.0 实战:用条件工作流和参数传递,轻松搞定多环境(SIT/PRD)数据任务编排

本文详细介绍了Azkaban 3.51.0的条件工作流和参数传递机制,帮助解决多环境(SIT/PRD)数据任务编排的痛点。通过参数继承体系和运行时参数注入,实现配置的层级覆盖和环境隔离,结合条件工作流实现智能任务路由,大幅提升部署效率和安全性。

weixin_30443075的博客 459

INCA基础教程

以软件自带Demo为例记录INCA学习过程,主要内容包括测量与标定。

yunqianrui的博客 6万+

基于STM32的嵌入式平台实现EtherCAT主站

本文将介绍如何在基于STM32的嵌入式平台上构建EtherCAT主站,并提供相应的源代码。使用SOEM库提供的API函数,我们可以实现与EtherCAT从站设备的实时通信和数据交换。在STM32的代码中,使用SOEM库提供的API函数初始化EtherCAT主站。在SOEM库中,我们可以找到EtherCAT主站的实现代码和相关的API函数。使用SOEM库提供的API函数实现EtherCAT主站的功能,包括发送和接收EtherCAT数据帧、处理从站设备的状态等。确保连接正常并且设备能够相互通信。

CodeSageX的博客 2834

docker 安装azkaban_Azkaban 任务调度系统(使用和小技巧)

上节主要介绍了安装搭建和简单的运行一个job,但是真正使用到实际场景还是需要了解更多的知识,比如任务怎么互相依赖,可以选择指定的节点来执行吗等等一些相关的操作会在本节中进行介绍附上:喵了个咪的博客:w-blog.cnAzkaban官网: https://azkaban.github.io官方文档地址: http://azkaban.github.io/azkaban/docs/latest一 ,任...

weixin_26918763的博客 1161

【Bug已解决】openclaw command not found / openclaw not installed — OpenClaw CLI 安装失败解决方案

安装 OpenClaw 后命令未找到或运行失败,本质是 PATH 未配置或 Python 版本不兼容。文中给出修复 PATH、使用虚拟环境、检查 Python 版本、pipx 安装等完整方案。

一键难忘的博客 8065

azkaban动态传入作业参数参考手册

.快速上手-shell类型job参数传递 2. shell类型的job的参数传递 azkaban中的shell 作业,如何接收从webUI传递的参数? step1: UI页面输入参数定义: ui_test=test111111111 step2:在job文件myjob.job指定: ##作业定义文件UI输入参数接收: job_param4=${ui_test} ##作业定义文件脚本命令行引用UI输入参数: sh test_azkaban_job.sh "${job_param4}"

Rust168的博客 691

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

azkaban动态传入作业参数使用介绍

azkaban动态传入作业参数使用介绍 参数传递时调度系统工作流运行时非常重要的一部分,工作流的执行,单个作业的执行,多个工作流之间的依赖执行,历史任务重算,都涉及参数传递和同步. (1)azkaban的工作流中的参数可以分为如下几个类型: 1)、azkaban UI 页面输入参数, 2)、环境变量参数, 3)、job作业文件中定义的参数,4)、工作流的用户定义的属性文件, 4)、上游...

helloxiaozhe的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

azkaban mysql参数_azkaban参数详解

参数传递是调度字体工作流运行时非常重要的一部分,工作流的执行,单个作业的执行,多个工作流之间的依赖执行,历史任务重算,都涉及到参数传递和同步。1 参数类型综述azkaban的工作流中的参数可以分为如下几个类型:Azkaban UI 页面输入参数环境变量参数job作业文件中定义的参数工作流的用户定义的属性文件,上游作业传递给下游的参数工作流运行时产生的系统参数job的common参数参数类型与其对应...

weixin_39987847的博客 572

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 物联网的图模型
下一篇: azkaban动态传入作业参数参考手册
Rust168
博客等级 码龄5年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值