原文地址:https://www.cnblogs.com/honeybee/p/7921626.html
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}"
step3:shell test_azkaban_job.sh 的内容
vi test_azkaban_job.sh
echo "inputparamter:$1" #接收job文件中传递的参数。
问题:在页面手动执行前面的job时,如果UI参数ui_test在job执行没有输入,会执行失败。异常信息如下:
hello ERROR - Failed to build job executor for job helloCould not find variable substitution for variable(s) [param4->ui_test ]
在定时调度任务指定时,需要指定工作流参数flowParameters :ui_test,避免该错误。
运行时参数:在UI页面重新输入运行时参数时,可以覆盖系统默认生成的参数值。
运行时参数,和UI输入的参数,都可以认为是全局参数,在整个工作流的作业
配置中,都可以通过 ${参数名} 的方式引用使用。
在shell 中直接引用 公共参数,运行时系统参数,UI输入参数,是无效的。
在shell中只能直接使用环境变量;公共参数,运行时系统参数,UI输入参数能只通过shell的脚本参数的方式传递
进来。
job文件中定义的环境变量参数,可以在shell脚本中直接引用,但只对当前job有效。