Timely Stream Processing只是在Stateful Stream Processing上增加了時間的處理憔足,可用于做特定時間段內(nèi)的聚合操作棠笑,或時間序列分析等蕾羊。
Event Time & Processing Time
Processing Time是operator開始處理數(shù)據(jù)的時間宋欺,通常是系統(tǒng)時間耕挨。使用processing time會達(dá)到最低延遲搔驼,但數(shù)據(jù)亂序時可能會導(dǎo)致結(jié)果不準(zhǔn)確厢塘。
Event Time是事件發(fā)生的時間茶没。使用event time時必須指定如何生成watermark.
Event Time and Watermarks
watermark也是data stream中的一條記錄,帶著一個時間戳t晚碾,表示所有在t之前發(fā)生的事件都已經(jīng)到達(dá)抓半,operator可以進(jìn)行計算了。在亂序的stream中格嘁,watermark是必須的笛求,否則計算過程永遠(yuǎn)不會被觸發(fā)。
Watermarks in Parallel Streams
watermark由source function產(chǎn)生糕簿,而每個并行的source function是獨立生成watermark的探入。operator收到watermark后更新自己的event time,并向下游operator發(fā)出一個新的watermark. 如果一個operator有多個input stream, 它會取較小的watermark的時間作為自己的event time.(因為如果以較大的為準(zhǔn)會導(dǎo)致另一個stream中的數(shù)據(jù)丟失)
Lateness
如果一個event time為t' < t的事件在watermark之后到達(dá)懂诗,則稱它遲到了蜂嗽。遲到的數(shù)據(jù)有幾種處理方法:
- 丟棄
- 統(tǒng)一輸出到一個output stream
- 設(shè)置一個遲到等待期,將遲到等待期內(nèi)到達(dá)的數(shù)據(jù)更新到計算結(jié)果中殃恒。
Windowing
對一個無界流做聚合操作是不現(xiàn)實的植旧,如你不能求一個無界流數(shù)據(jù)的和,所以我們需要設(shè)置一個窗口离唐,僅對窗口內(nèi)的數(shù)據(jù)做聚合操作病附。