转:

azkaban的工作流中的参数可以分为如下几个类型:azkaban UI 页面输入参数, 环境变量参数,

job作业文件中定义的参数,工作流的用户定义的属性文件,上游作业传递给下游的参数,
工作流运行时产生的系统参数,job的common参数等。

参数的作业范围分类,对当前job有效局部有效,对整个工作流全局有效。

1. Job配置中的参数全局参数,在整个工作流的作业文件配置中,都可以通过 ${参数名} 的方式引用使用。

  • common参数配置

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

用户也可以自用一下参数,用于接收外部或者上游job的参数,也可用于传递给shell脚本等。一个flow的email属性,只会取最后一个job的配置,其他的job的email配置将会被忽略。

  • Runtime 属性

这些属性在job运行期间自动被添加.

  • 参数名不能有空格,标点符号等。参数继承

    后缀名为.properties的文件将会作为参数文件加载,并且为flow中每个job所共享,属性文件通过目录的分层结构继承
    比如,在zip包中有以下结构
    system.properties baz.job myflow/ myflow.properties myflow2.properties foo.job bar.job
    system.properties是全局的属性,将会被baz.job和myflow目录下的foo.job和bar.job使用,但是baz.job不会继承myflow.properties和myflow2.properties的属性,因为是它的下层.

  • 参数替换

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

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

    前面这个例子,在myjob 作业运行前,foo 会被赋值为bar , param2会被赋值为mytest.

  • Parameter Passing:参数传递

    azkaban以job执行过程中,传递进来的临时参数,运行时参数,项目中配置文件的参数,job定义中参数等 都保存在 ${JOB_PROP_FILE}文件中,保存格式为key=value。执行job的中shell命令时,可以作为参数传递。
    JOB_PROP_FILE 是一个环境变量参数。

  • Parameter Output:参数输出

    一个任务运行结束,可以将一些参数写入到${JOB_OUTPUT_PROP_FILE}文件 中,azkaban会将这些参数传递到下游依赖的的job的参数文件${JOB_PROP_FILE}文件中,供下游job引用。
    写如到${JOB_OUTPUT_PROP_FILE}文件中参数需要是json格式的,否则会报json解析错。
    JOB_OUTPUT_PROP_FILE也是一个环境变量参数。

2.web UI 传入,shell接收

[root@localhost shell]# cat acceptUIParam.job
##作业定义文件UI输入参数接收:
job_param=${ui_input} ##作业定义文件脚本命令行引用UI输入参数:
sh testUIInput.sh "${job_param}"
[root@localhost shell]# cat testUIInput.sh
echo "inputParameter:$1"
date [root@localhost shell]# zip azkaban_job201904290932.zip acceptUIParam.job testUIInput.sh
adding: acceptUIParam.job (deflated %)
adding: testUIInput.sh (stored %)
[root@localhost shell]#

create project

upload zip file

execute flow

add-row(add Flow parameter)-->execute

查看结果及日志

detail command output

azkaban使用--传入动态参数的更多相关文章

  1. request方法传入动态参数的一个"误区"

    晚上写了一个请求类,传了一个动态参数进去,实例化测试的时候,发现请求数据根本没法读到,先附上代码 import requests class MyRequests: def send_request( ...

  2. JS中用apply、bind实现为函数或者类传入动态个数的参数

    为纪念10年没写blog,第一篇博文就以这样一个有趣的窍门开始吧 -___- 在ES5中,当我们调用一个函数时,如果要传入的参数是根据其他函数或条件判断生成的,也就是说不确定会传入多少个参数时,在不改 ...

  3. js 动态调用字符串方法并传入对应参数

    在项目应用中,经常会需要根据业务数据需要动态去拼凑字符串,然后将字符串作为js代码进行执行. js提供eval()来支持.这里分享一个调用函数并传入需要参数的一个方法demo //动态调用自定义js方 ...

  4. PYTHON 函数的动态参数

    #普通参数示例 def func(args): print(args) func(123456) #执行结果为123456 如果给多个参数,就会报错 #动态参数示例 def func(*args): ...

  5. Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色

    上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...

  6. Java vararg(动态参数)的应用

    可变参数在JDK 1.5添加,刚才知道的. 以下来自<Java泛型和集合>一书. 将参数打包成一个数组传入方法中是一件让人讨厌的事,在jdk1.5中加入了一个新的功能称为vararg(动态 ...

  7. python(3)-函数动态参数

    先来看一段代码 def show(*arg): print(arg, type(arg)) if __name__ == "__main__": show(1) show(1,2, ...

  8. python之动态参数 *args,**kwargs和命名空间

    一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...

  9. Python_动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal

    1.动态参数 当实参数量与形参数量相等时,参数传递正常. def func1(a, b, c): pass func1(1, 2, 3) 当实参数量与形参数量不相等时,则会报错. def func1( ...

随机推荐

  1. Python环境os模块功能

    功能 语句 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名: os.listdir() 函数用来删除一个文件: os.remove( ...

  2. BZOJ5311,CF321E 贞鱼

    题意 Problem 5311. -- 贞鱼 5311: 贞鱼 Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 677  Solved: 150[Subm ...

  3. servlete基础

    1.  使用servlet需要继承HttpServlet Servlet 生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程.以下是 Servlet 遵循的过程: Servlet 通 ...

  4. dbca建库--linux上使用vnc图形化安装oracle10g版本

    选择创建数据库 配不配置em,自己决定,我们选择配置 配置下面账户密码,在项目中,下面账户肯定是不相同的,我们这里输入相同的,密码为oracle10g 选择文件系统存放(asm和字符设备暂时不能存放) ...

  5. openstack--10--知识点补充

    关于uuid和Fernet方式比较 提供令牌有四种方式[fernet|pkiz|pki|uuid]默认是uuid.

  6. 20165308『网络对抗技术』Exp5 MSF基础应用

    20165308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...

  7. QQ浏览器中时区bug

    在QQ浏览器 4.4.119.400 版本中,通过new Date('2018-11-11').getTime(); 获取的时间不是东8区的时间戳,而是0时区的时间戳,这就导致了获取的时间与实际的时间 ...

  8. python基础知识6---文件处理

    阅读目录 一 文件操作 二 打开文件的模式 三 操作文件的方法 四 文件内光标移动 五 文件的修改   一 文件操作 一 介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用pytho ...

  9. Redis配置不当致使root被提权漏洞

    Redis配置不当致使root被提权漏洞 Dear all~ 最近Redis服务被曝出因配置不当,可能造成数据库被恶意清空,或被黑客利用写入后门文件造成进一步入侵,请关注! 一.漏洞发布日期 2015 ...

  10. 2016310Exp5 MSF基础应用

    1. 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击, ...