我有三個協調員A,B和COozie的協調輸入事件不起作用
B和C的協調取決於A的輸出也就是說,如果A的輸出就緒,協調員B和C將運行。
所以,我使用輸入事件來控制這種依賴關係。
協調員B和C的結構看起來像
<coordinator-app name="B" frequency="1440" start=${start} end=${end} timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<datasets>
<dataset name="input1" frequency="1440" initial-instance=${start} timezone="UTC">
<uri-template>hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}</uri-template>
</dataset>
</datasets>
<input-events>
<data-in name="coordInput1" dataset="input1">
<instance>${coord:current(0)}</instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>hdfs://localhost:9000/B/workflows</app-path>
</workflow>
</action>
</coordinator-app>
因此,如果創建hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/_SUCCESS
,協調B和C將被觸發運行他們的工作流程。
A的協調是這樣的:
<coordinator-app name="B" frequency="1440" start=${start} end=${end} timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<action>
<workflow>
<app-path>hdfs://localhost:9000/A/workflows</app-path>
</workflow>
</action>
</coordinator-app>
其${start}
和${end}
是相同B和C.
A的工作流將創建hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/_SUCCESS
然而,B的協調器和C仍在等待hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/_SUCCESS
即使我使用輸出A的協調員事件,B和C的工作流程仍然需要創建的輸入數據集。
<coordinator-app name="A" frequency="1440" start=${start} end=${end} timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<datasets>
<dataset name="output1" frequency="1440" initial-instance=${start} timezone="UTC">
<uri-template>hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}</uri-template>
</dataset>
</datasets>
<output-events>
<data-out name="coordOutput1" dataset="output1">
<instance>${coord:current(0)}</instance>
</data-out>
</output-events>
<action>
<workflow>
<app-path>hdfs://localhost:9000/A/workflows</app-path>
</workflow>
</action>
</coordinator-app>
但是,如果我提交A的工作流程而沒有其協調員,那麼B和C的工作流程將按預期觸發。
我不確定是否在我的協調員A中缺少某些東西。
謝謝!
** Q1。**在您的代碼示例中,協調員A被命名爲「B」。這是一個複製/粘貼錯字? ** Q2。**當* A *完成時,您爲什麼不併行觸發2個子工作流程(* B *和* C *)?因爲* A *可能希望在* B *之前重新啓動和/或* C *完成了嗎? –
是的!這是一個錯字。是否可以直接從一個工作流觸發工作流,並使用oozie並行運行每個工作流(B和C是並行運行的)?我不知道該怎麼做。 –
查看「叉/加入」操作和「子工作流」操作。例如,在那個老的,但全面的教程:http://www.infoq.com/articles/oozieexample * - 然後標記我的評論是有用的,如果它是: - )*) –