我在oozie捆绑中更新鲜。我想在bundle job中一个接一个地运行多个协调器。我的要求是在完成一个协调器作业后生成_SUCCESS文件,然后通过使用该_SUCCESS文件应该触发第二个协调器。我不知道该怎么做。为此我使用了数据依赖技术,它将跟踪前一个协调器生成的输出文件。我分享了一些我尝试过的代码。
让我们说有2个协调员工作:A和B.我想只触发A协调员。如果生成协调员A的_SUCCESS文件,那么只有协调员B才能启动。
A - coordinator.xml
<workflow>
<app-path>${aDir}/aWorkflow</app-path>
</workflow>
这将调用相应的workflow.and _SUCCESS文件在$ {aDir} / aWorkflow / final_data / $ {date} / aDim位置生成,所以我将此位置包含在 B协调员:
<dataset name="input1" frequency="${freq}" initial-instance="${START_TIME1}" timezone="UTC">
<uri-template>${aDir}/aWorkflow/final_data/${date}/aDim</uri-template>
</dataset>
<done-flag>_SUCCESS</done-flag>
<data-in name="coordInput1" dataset="input1">
<instance>${START_TIME1}</instance>
</data-in>
<workflow>
<app-path>${bDir}/bWorkflow</app-path>
</workflow>
但是当我运行它时,第一个协调器本身会被杀死,但是如果我单独运行它们就会成功运行。我不知道为什么这些都被杀死了。 帮助整理
答案 0 :(得分:2)
我找到了简单的方法。我正在共享解决方案。对于协调员B coordinator.xml,我正在分享。 1)对于数据集实例应该是第二个的开始时间,但它不应该是第一个协调器的时间实例。否则特定协调器将被杀死。 2)如果要一个接一个地运行多个协调器,那么您还可以在coordinator.xml中包含控件。例如并发,超时或限制。有关这些控件的详细信息,请参阅&#34; apache oozie&#34;书的第6章。 3)在&#34;&#34;我包括最新的(0)它将在提到的输出路径中采取最新生成的文件夹。 4)对于&#34;输入事件&#34;必须将其名称作为$ {coord:dataIn(&#39; coordInput1&#39;)}的输入包含在内。否则oozie将不会考虑数据集。
三十
1
$ {} aimDir / aDimWorkflow / final_data / $ {日期和时间} / ADIM
_成功
$ {坐标:最新的(0)}
$ {} bDir / bWorkflow
input_files
$ {坐标:DATAIN(&#39; coordInput1&#39;)}