2015-05-13 2 views
0

Как получить name текущего action в рабочем процессе oozie?Oozie Workflow: Как получить имя текущего имени действия?

Например:

<action name="hello_action"> 
    <shell xmlns="uri:oozie:shell-action:0.1"> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <exec>/user/nz/printActionName.sh</exec> 
     <argument><!-- PASS current action name i.e. hello_action --></argument> 
     <file>/user/nz/printActionName.sh#printActionName.sh</file> 
     <capture-output/> 
    </shell> 
    <ok to="end"/> 
    <error to="fail"/> 
</action> 
+0

Имя действия статическое, не так ли? Просто передайте его как строку –

+0

Да, я могу сделать ' hello_action', но на самом деле у меня есть более 100 таких действий, и, чтобы избежать ошибок копирования-вставки, было интересно, есть ли более простой способ –

ответ

0

В настоящее время не существует никакого способа в Oozie, чтобы получить имя текущего узла действия. Однако обходным решением будет следующее:

  1. Получить workflowId с использованием функции EL;
  2. Запросить статус рабочего процесса с помощью API Oozie;
  3. Получите имя ID, который запущен;
  4. Split на «@»., Что ваше имя шаг
0

Когда Oozie подает Shell Действие на пряжу, она судов в XML файл с некоторой информацией о текущем Workflow и действий, а также устанавливает окр. чтобы указать на этот файл. Просто проанализируйте XML с помощью sed и voila.

if [[ "$CONTAINER_ID" != "" && "$OOZIE_ACTION_CONF_XML" != "" ]] 
then 
    RawDump=$(/bin/sed -n '/<name>mapreduce.job.name<\/name>/ { N ; s/^.*<value>oozie:action:/:/ ; s/<\/value>.*$/:/ ; p}' "$OOZIE_ACTION_CONF_XML") 
    MyOozieWorkflow=$(/bin/echo "$RawDump" | /bin/sed -n '/:W=[^:]*:/ { s/^.*W=// ; s/:.*$// ; p }') 
    MyOozieJobId=$( /bin/echo "$RawDump" | /bin/sed -n '/:ID=[^:]*:/ { s/^.*ID=// ; s/:.*$// ; p }') 
    MyOozieAction=$( /bin/echo "$RawDump" | /bin/sed -n '/:A=[^:]*:/ { s/^.*A=// ; s/:.*$// ; p }') 
else 
    MyOozieWorkflow='None' 
    MyOozieJobId='None' 
    MyOozieAction='None' 
fi 
Смежные вопросы