2017-06-14 174 views
1

我必須用最後1小時,1周和1個月的數據處理每個事件。就像在同一事件發生的最後1個月內發生了多少次相同的IP一樣。Flink流過去1小時,1周和1月數據的流程事件

我想窗口是固定的時間,我不能對應當前事件最近一小時計算。

如果您有任何線索請指導我應該怎麼用表,ProcessFunction或全局窗口。或者我應該採取什麼方法?

回答

3

還有爲什麼這種開窗,不支持出與弗林克盒子,裏面有周圍必要的狀態保持的內存需求做的一個原因。按照通常完成的方式(即從10:00到11:00的小時)計算每小時的事件僅需要圍繞從零開始並隨着每個事件增加的計數器進行計數。計時器在小時結束時觸發,計數器可以發射。

在每一時刻提供了在前面60分鐘事件的數量將要求窗口操作在內存中保留每個事件的時間戳,並做了很多,每次的結果是要發出計數。

如果你真的打算這樣做,我建議你確定你需要多長時間提供更新的結果。例如,對於每分鐘更新一次,您只能存儲分鐘計數,而不是每個事件。

這會有所幫助,但情況依然很糟糕。例如,您可能會試圖使用滑動窗口,每分鐘提供上個月的事件計數。但是這也會很痛苦,因爲你會實例化60 * 24 * 30 = 4300個窗口對象,並行計數。

的弗林克API中的相關構件是ProcessFunction,如果你決定要堅持使用Windows這是一個有趣的選擇與Windows這樣做,和自定義TriggersEvictors。請注意,也可以查詢Flink中保存的狀態,而不是根據時間表排除它 - 請參閱queryable state

+0

謝謝,我會嘗試相同的。 –