В моем примере использования результат действия координатора используется следующей итерацией, поэтому, если один из них не работает, незаконченные/поврежденные данные передаются в следующее действие координатора.Как приостановить координацию Оози, если действие координатора не удастся?
Есть ли способ приостановить координатор Оози, если один из шагов рабочего процесса в действии координатора не удался?
Например, вместо:
<action name="Delete_TMP_Files">
<fs>
<delete path='${outputPath}*'/>
</fs>
<ok to="End"/>
<error to="Kill"/>
</action>
Можем ли мы сделать что-то вроде:
<action name="Delete_TMP_Files">
<fs>
<delete path='${outputPath}*'/>
</fs>
<ok to="End"/>
<error to="Suspend"/>
</action>
поэтому ошибка может быть диагностирована до его вывода получает перезаписаны следующего действия координатора?
PS: fs> delete не является фактическим прецедентом здесь, просто пример.
Если ваше действие «Suspend» было действием Shell с бесконечным циклом - например, 'while [[1 -eq 1]]; спать 1 ч; done' - тогда это эффективно приведет к зависанию вашего Workflow; и с параметром « 1 concurrency>», который также заставит координатора зависать. Но это не поймало бы случай, когда Workflow будет убит во время работы. –
Вы также можете создать семафор '_SUCCESS', как и Pig или Spark, в последнем действии вашего рабочего процесса, и чтобы координатор дождался этого семафора с помощью« »; то первое действие следующего прогона Workflow удалит его и т. д. Но это предложение «набора данных» звучит сложнее, гораздо больше, чем это сообщение означает https://github.com/yahoo/oozie/wiki/Oozie-Coord-Use-Cases –