2016-07-26 10 views
0

Ist es möglich, ein <param> Tag in oozie vor dem <script> Tag zu verwenden.Oozie Param-Tag vor dem Skript-Tag?

wie unten:

   <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> 

Der Grund ist mein Skript Name sollte als Paramter und nicht fest einprogrammiert weitergegeben werden. Und dieser Skriptname wird von meiner MySQL-Datenbank wie ${wf:actionData('GetJobParameters')['SCRIPT_NAME']} übernommen.

Jede Hilfe wird geschätzt.

+2

Hmm ... kein Grund Sie nicht schreiben kann direkt ' '?? –

+0

Außerdem bezieht sich der Ausdruck '$ {script_name}' auf einen Oozie * -Parameter * (wie in '' Abschnitt von Workflow oder in der Konfigurationsdatei zum Zeitpunkt der Übergabe), nicht auf einen lokalen '', der übergeben werden soll wie es ist bei der Pig-Aktion. –

+0

Weitere Details über was ist ein "Parameter" in Oozie Dialekt, in diesem Beitrag: http://StackOverflow.com/Questions/38337362/oozie-properties-defined-in-file-referenced-in-global-job-xml- nicht sichtbar-in-wo –

Antwort

0

Nein. Das geht nicht, weil Oozie Workflow/Action XML alles in der im Schema definierten Reihenfolge erwartet.

Auch Ihr Verständnis des Tags <param> scheint ebenfalls falsch zu sein. Es ist nicht für eine Variable deklarieren und später verwenden. Ich schätze, Sie schreiben eine hive Aktion, <param> werden verwendet, um den Parameter <key=value> an den Hive-Job zu übergeben. Dies entspricht --hivevar zum Angeben der Variablen in Hive SQL. key ist eine Variable, die Sie im Hive-SQL-Skript verwendet haben.

Sie tun können, wie sie in der @SamsonScharfrichter erwähnt:

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