У меня есть задание mapreduce, которое запланировано координатором oozie и выполняется каждые 4 часа. Это задание mapreduce принимает параметр, скажем, k, значение которого задается в файле job.config. Я хотел бы знать, если я изменю значение этого параметра между двумя запусками, выберет ли он обновленное (новое) значение или будет придерживаться исходного (старого) значения?

2
HHH 20 Июл 2015 в 19:46

2 ответа

Если задание находится в режиме выполнения, оно само будет придерживаться параметра Old, а если задание ожидает запланированного запуска, оно примет самое последнее значение :).

0
Deb 4 Авг 2015 в 13:40

На самом деле, есть хитрый способ «динамически» получить значение параметра во время выполнения:

  1. вставьте фиктивное действие оболочки в начале рабочего процесса с помощью Набор опций
  2. в сценарии оболочки просто загрузите файл свойств из HDFS и выгрузить его в STDOUT
  3. опция «capture-output» сообщает Oozie, что нужно преобразовать STDOUT в карту (т. е. список ключей/значений)
  4. затем используйте E.L. функция для получения соответствующих значений в следующих действиях

${wf:actionData("DummyShellAction")["some.key"]}

http://oozie.apache.org/docs/4.0.0/WorkflowFunctionalSpec.html#a4.2.6_Hadoop_Jobs_EL_Function

0
Samson Scharfrichter 6 Авг 2015 в 00:07