脚本标签前的Oozie param标签?

时间:2016-07-26 13:49:03

标签: hadoop oozie

是否可以在<param>代码之前的oozie中使用<script>代码。

如下所示:

               <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']}

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

没有。你不能这样做,因为Oozie工作流/动作xml期望按照模式中的定义按顺序排列所有内容。

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

你可以像@SamsonScharfrichter提到的那样:

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