2015-11-13 86 views
0

我在oozie包中更新鮮。我想要在捆綁作業中一個接一個地運行多個協調器。我的要求是在完成一個協調器作業_SUCCESS文件生成後,然後通過使用該_SUCCESS文件第二個協調器應該被觸發。我不知道該怎麼做。爲此,我使用了數據依賴性技術,該技術將跟蹤以前協調器的生成輸出文件。我正在分享我嘗試過的一些代碼。如何在oozie包中運行多個協調器

假設有2個協調員工作:A和B.並且我只想觸發一個協調員。如果協調員A的_SUCCESS文件生成,那麼只有協調員B應該開始。

A - coordinator.xml

<workflow> 

    <app-path>${aDir}/aWorkflow</app-path>  

</workflow> 

這將調用各自workflow.and _SUCCESS文件在$生成{ADIR}/aWorkflow/final_data/$ {date}/aDim location,所以我在中包含了這個位置乙協調器:

<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> 

但是當我運行它首先協調員就會被殺死自己,但如果我單獨運行它們運行successfully.i'm沒有得到爲什麼這些都被殺。 幫助整理

回答

2

我找到了一個簡單的方法來做到這一點。我正在分享解決方案。對於協調員B coordinator.xml,我正在分享。 1)對於數據集實例應該是第二個的開始時間,但它不應該是第一個協調器的時間實例,否則特定的協調器將獲得KILLED。 2)如果您想要一個接一個地運行多個協調器,那麼您還可以在coordinator.xml中包含控件。例如併發性,超時或節流。有關這些控件的詳細信息,請參閱「apache oozie」一書的第6章。 3)在「」我包含最新的(0)它會採取最新生成的文件夾在提到的輸出路徑。 4)對於「輸入事件」,必須將其名稱包含到$ {coord:dataIn('coordInput1')}的輸入中,否則oozie不會考慮數據集。

$ {aimDir}/aDimWorkflow/final_data/$ {日期}/ADIM _SUCCESS $ {座標:最新(0)}
$ {bDir}/bWorkflow input_files $ {coord:dataIn('coordInput1')}