2016-09-15 37 views
2

NiFi是否具有同步機制以便知道何時已完成處理?Nifi-1.0.0 - 同步機制

我攝取了一些數據,做一些處理,並在步驟N-1我想知道的所有數據已經​​以前進到(最後一步)N.

[的GetFile/1000 000行被處理] - > [proc1/process step 0] -----> [proc2/process step 1] .... [putSQL/insert into db] ---> [proc讓我知道我'已將所有數據插入表中] ----> [ProcN /在數據上運行聚合,例如]

回答

3

NiFi實際上並沒有內置在框架中的顯式同步功能,但某些處理器具有幫助同步活動。我能想到的幾個可能的方法可以讓你流的工作:

  • 調度 - 你可以安排的GetFile和使用上的處理器科雷調度後總操作,假定操作持續時間相對可預測的。

  • MonitorActivity - MonitorActivity處理器可以基於隊列中的不活動來觸發流文件。你可以在PutSQL的下游使用它,並在插入停止並且聚合應該開始時觸發。

  • MergeContent(簡單) - 一個MergeContent處理器可能聚集PutSQL的結果合併到觸發集合操作的單個消息。您將不得不嘗試使用bin大小和年齡的屬性才能使其正常工作。

  • MergeContent(碎片整理) - MergeContent具有碎片整理策略設計爲一起關聯的大文件的片段。它需要在流程文件上設置特定的屬性,請參閱文檔底部的「讀取屬性」部分。行爲似乎接近你想要的,但設置這些片段屬性可能很困難。

+0

我實際上已經擴展了MergeContent(Defragment)的行爲以達到我想要的效果,但我很好奇是否有更好的方法來做到這一點。 MonitorActivity看起來很有趣,我會研究它。 謝謝! – bsd