2015-10-13 3 views
1

У меня есть рабочий процесс oozie, который будет вызывать файл оболочки, файл Shell дополнительно вызовет класс драйвера задания mapreduce. Теперь я хочу отобразить мою работу oozieId в Mapreduce jobId для последующего процесса. Есть ли способ получить oozie jobId в файле workflow, чтобы я мог передавать то же, что и аргумент в свой класс драйвера для сопоставления.Как получить oozie jobId в рабочем процессе oozie?

Ниже мой пример workflow.xml файл

<workflow-app xmlns="uri:oozie:workflow:0.4" name="test"> 
<start to="start-test" /> 
<action name='start-test'> 
    <shell xmlns="uri:oozie:shell-action:0.2"> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <configuration> 
      <property> 
       <name>mapred.job.queue.name</name> 
       <value>${queueName}</value> 
      </property> 
     </configuration> 
     <exec>${jobScript}</exec> 
     <argument>${fileLocation}</argument> 
     <argument>${nameNode}</argument> 
     <argument>${jobId}</argument> <!-- this is how i wanted to pass oozie jobId --> 
     <file>${jobScriptWithPath}#${jobScript}</file> 
    </shell> 
    <ok to="end" /> 
    <error to="kill" /> 
</action> 
<kill name="kill"> 
    <message>test job failed 
     failed:[${wf:errorMessage(wf:lastErrorNode())}]</message> 
</kill> 
<end name="end" /> 

Ниже мой сценарий оболочки.

hadoop jar testProject.jar testProject.MrDriver $1 $2 $3 

ответ

4

Попробуйте использовать ${wf:id()}:

Строка ВФ: идентификатор()

Возвращает идентификатор задания рабочего процесса для текущего задания рабочего процесса.

More info here.

+0

Спасибо, друг. Оно работает. – Vijayakumar

1

Oozie падает файл XML в ВПЦ в ПРЯЖИ контейнера под управлением оболочки (далее «пусковой» контейнер), а также устанавливает переменную окр, указывающую на этот XML (не помню название хотя).

Этот XML содержит много вещей, таких как название Workflow, имя Action, идентификатор обоих, номер попытки запуска и т. Д. Итак, вы можете вернуть sed эту информацию в скрипт оболочки.

Конечно, передача явно ID (как предложено Алексеем) была бы чище, но иногда «чистая» - это не лучший способ. Особенно, если вас беспокоит, является ли это первым прогоном или нет ...

Смежные вопросы