脚本标记之前的Oozie param标记?
问题描述:
是否可以在<script>
标签之前的oozie中使用<param>
标签。脚本标记之前的Oozie param标记?
象下面这样:
<param>script_name=${wf:actionData('GetJobParameters')['SCRIPT_NAME']}</param>
<script>/tmp/abc/hive/${script_name}</script>
<param>K_NAME=${wf:actionData('GetJobParameters')['K_NAME']}</param>
<param>P_NAME=${wf:actionData('GetJobParameters')['P_NAME']}</param>
<param>CNAME=${wf:actionData('GetJobParameters')['C_NAME']}</param>
原因是我的脚本名称应为放慢参数传递,而不是硬编码。这个脚本的名字是从我的mysql数据库,如${wf:actionData('GetJobParameters')['SCRIPT_NAME']}
。
任何帮助表示赞赏。
答
不可以,因为Oozie workflow/action xml按照架构中定义的顺序预计所有内容。
另外,您对<param>
标签的理解也是错误的。它不是用于声明变量并稍后使用它。我猜你正在编写一个hive
动作,<param>
用于将<key=value>
参数传递给配置单元作业。这与用于指定hive SQL中的变量的--hivevar
类似。 key
是您在配置单元sql脚本中使用的变量。
由@SamsonScharfrichter提到你可以这样做:
<script>/tmp/abc/hive/${wf:actionData('GetJobParameters')['SCRIPT_NAME']}</script>
嗯......任何原因,你不能直接写''?? –
此外,表达式'$ {script_name}'指的是一个Oozie *参数*(如在工作流程的“”部分或在提交时的配置文件中),而不是指本地的''原本就是猪的行为。 –
关于什么是Oozie方言中的“参数”的更多细节,在该文章中:http://stackoverflow.com/questions/38337362/oozie-properties-defined-in-file-referenced-in-global-job-xml- not-visible-in-wo –