2016-07-26 46 views
0

是否可以在<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']}

任何帮助表示赞赏。

+2

嗯......任何原因,你不能直接写''?? –

+0

此外,表达式'$ {script_name}'指的是一个Oozie *参数*(如在工作流程的“”部分或在提交时的配置文件中),而不是指本地的''原本就是猪的行为。 –

+0

关于什么是Oozie方言中的“参数”的更多细节,在该文章中:http://stackoverflow.com/questions/38337362/oozie-properties-defined-in-file-referenced-in-global-job-xml- not-visible-in-wo –

回答

0

不可以,因为Oozie workflow/action xml按照架构中定义的顺序预计所有内容。

另外,您对<param>标签的理解也是错误的。它不是用于声明变量并稍后使用它。我猜你正在编写一个hive动作,<param>用于将<key=value>参数传递给配置单元作业。这与用于指定hive SQL中的变量的--hivevar类似。 key是您在配置单元sql脚本中使用的变量。

由@SamsonScharfrichter提到你可以这样做:

<script>/tmp/abc/hive/${wf:actionData('GetJobParameters')['SCRIPT_NAME']}</scri‌​pt>