2015-07-20 38 views
2

誰能幫我回答這個問題,如果有執行聚合操作週期2s一個5秒的時間窗口。第一2S處理數據中n和n + 5之間的窗口,而第二2S在+ 2和n + 7 N之間窗口處理的數據。似乎Flink在n + 2到n + 5的時間內做了重複的工作。是那個嗎?任何幫助將不勝感激!如何理解Flink窗口語義?

回答

1

你是對的。如果你應用一個函數,這可能會重複使用第一個窗口的結果來計算第二個窗口,但目前Flink並沒有利用這個函數。從頭開始計算每個窗口。 (但是,在開發議程中的這種優化已經並將在未來版本中得到支持。)

+0

非常感謝您! – zhangshengxiong

3

Flink進程應該是(n,n + 2),(n,n + 4),(n + 1,n + 6),(n + 3,n + 8)。所以在開始時窗戶不是5秒鐘寬。它必須「趕上」,因爲還沒有足夠的時間數據。該窗口每兩秒鐘處理一次,並且從該點開始查看最後5秒。

一般更容易想到的窗口,如果幻燈片大小和窗口大小有一個最大公約數(GCD)。此外,使用基於窗格的方法,可以更快地評估窗口。

+0

謝謝!也許應該說第n 2S m和m + 5之間處理數據在窗口而第(n + 1)個2S以m + 2,且m + 7之間的窗口處理的數據... – zhangshengxiong