azkaban使用--传入动态参数

转:

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

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

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

azkaban使用--传入动态参数_第1张图片

 


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

  • common参数配置

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

 

azkaban使用--传入动态参数_第2张图片

 


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

  • Runtime 属性

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

  • azkaban使用--传入动态参数_第3张图片

     


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

    后缀名为.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 20%)
  adding: testUIInput.sh (stored 0%)
[root@localhost shell]# 


create project

 

azkaban使用--传入动态参数_第4张图片

azkaban使用--传入动态参数_第5张图片

upload zip file

azkaban使用--传入动态参数_第6张图片

azkaban使用--传入动态参数_第7张图片

execute flow

 

 azkaban使用--传入动态参数_第8张图片

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

azkaban使用--传入动态参数_第9张图片

 

 查看结果及日志

azkaban使用--传入动态参数_第10张图片

azkaban使用--传入动态参数_第11张图片

detail command output

 

 azkaban使用--传入动态参数_第12张图片

azkaban使用--传入动态参数_第13张图片

 

转载于:https://www.cnblogs.com/pu20065226/p/10785395.html

你可能感兴趣的:(azkaban使用--传入动态参数)