2016-05-24 121 views
2

我想知道如何找出/捕獲Apache Nifi中任何流的總執行時間。有沒有辦法做到這一點,並將其添加到屬性列表,以便可以通過PutEmail共享相同的內容?apache nifi總執行時間

回答

4

我相信你將不得不添加一個自定義時間戳屬性,當收到流文件,做大量的處理,然後計算一個經過時間屬性,包括在電子郵件中。您可以使用兩個UpdateAttribute處理器執行此操作。

  1. UpdateAttribute,接收 = ${now():toNumber()}

  2. (做處理)

  3. UpdateAttribute,經過 = ${now():toNumber():minus(${received}):format("HH:mm:ss")}

這將格式化等的經過時間「 00:04:1 6「(4分16秒)。您可以在PutEmail郵件內容中將此用作${elapsed}

但是,這有點難看,只給出了處理時間的近似值。 NiFi出處系統維護「血統持續時間」,它描述自從文件進入NiFi以來流逝的時間。這是一個更具權威性的數字。但我不相信你可以從表達式語言查詢血統持續時間。您將不得不分別查詢和分析起源數據。

enter image description here

+0

謝謝。我嘗試了這種方法,它工作。我能夠用它捕捉執行時間。 –

4

詹姆斯提供上述優異的解釋。另外也請注意,不過,是不是增加了接收數據時的時間戳的屬性,你可以簡單地引用lineageStartDate屬性:

${now():toNumber():minus(${lineageStartDate}):format("HH:mm:‌​ss")} 

這是用來確定譜系相同的值出處的持續時間。

+0

爲了清楚起見,你的意思是說,而不是按照上面的@James所建議的那樣:(當前時間 - 開始時間),我可以直接使用LineageStartDate屬性,它會給我這個過程的持續時間? –

+0

應該是'$ {now():toNumber():minus($ {lineageStartDate}):format(「HH:mm:ss」)}'?太棒了,我不知道那是無障礙的,+1! – James

+0

對不起 - 是的,應該是'$ {now():toNumber():minus($ {lineageStartDate}):format(「HH:mm:ss」)}'。對我的錯字好:) –