2016-07-26 48 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>