Oozie param 标签在脚本标签之前?

Oozie param tag before the script tag?

是否可以在 oozie 中的 <script> 标签之前使用 <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> 参数传递给配置单元作业。这类似于 --hivevar 用于指定 hive SQL 中的变量。 key 是您在配置单元 sql 脚本中使用的变量。

您可以按照@SamsonScharfrichter 提到的那样做:

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