转:

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. centos tree 命令

    ftp://mama.indstate.edu/linux/tree/ download & make

  2. Deloyment Descriptor web.xml

    Deployment Descriptor部署描述符: - 部署描述符是要部署到Web容器或EJB容器的Web应用程序或EJB应用程序的配置文件. - 部署描述符应包含EJB应用程序中所有企业bean ...

  3. gtest 三种事件机制

    前言: 1.首先说明gtest中事件的结构层次: 测试程序:一个测试程序只有一个main函数,也可以说是一个可执行程序是一个测试程序.该级别的事件机制会在程序的开始和结束执行. 测试套件:代表一个测试 ...

  4. [原] RTTI 为什么type_info 有比较操作

    The lifetime of the object returned by typeid extends to the end of the program. 根据C++标准, typeid()返回 ...

  5. 如何实现从Java入门到服务端项目开发的进阶?

    对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而言,应该对于学习时间.目标和内容规划有一个清晰的定 ...

  6. Hi3519V101+IMX274开发板调试经验

    1.uboot没换 2.内核网络不对,其它的正常, sudo apt-get install libncurses5-dev sudo apt-get install u-boot-tools 3.根 ...

  7. Django学习笔记之数据库-模型的操作

    模型的操作 在ORM框架中,所有模型相关的操作,比如添加/删除等.其实都是映射到数据库中一条数据的操作.因此模型操作也就是数据库表中数据的操作. 添加模型 添加模型到数据库中.首先需要创建一个模型.创 ...

  8. c标签 多个条件

    <c:if test="${(rwyy01.yyry==NULL || rwyy01.yyry=='') && (rwyy01.shry==NULL || rwyy01 ...

  9. Python 入门级报错处理

    问题1:Missing parentheses in call to 'print' 原因:因为Python2.X和Python3.X不兼容.我安装的是Python3.X,但是我试图运行的却是Pyth ...

  10. 关于java的动态代理

    给目标对象提供一个代理对象.有代理对象控制目标对象的引用. 1.间接的访问目标对象: 2.对原有的业务增强: 比如:Spring的注解: Mybatis同过mapper接口访问数据库 静态代理: 遵循 ...