簡體   English   中英

flink-在鍵控窗口上折疊

[英]flink - folds on keyed windows

我想每隔15秒處理一次折疊數據。 從“外部”看來,窗口似乎在保留該持續時間內的所有數據,然后立即將其全部提交給fold函數。

真相?

如果是這樣,是否有一種方法可以在每次提交新數據時都調用fold函數,然后在窗口末尾返回結果

是否可以將其他轉換組合在一起以實現此效果?

您的觀察是正確的,是的。 原因是窗口運算符的當前實現受到一定限制。 從概念上講,窗口運算符中有兩個元素: 窗口緩沖區窗口函數 假設窗口運算符的輸入類型為IN ,輸出類型為OUT 現在,窗口緩沖區存儲了IN類型的元素,並且當需要發射元素時,它會發射IN類型的元素。 窗口函數將輸入元素IN的集合作為輸入,並發出OUT類型的元素( Collection[IN] -> OUT )。

如果window函數是reduce函數,我們可以在窗口緩沖區內預聚合,因為該窗口的簽名是(IN, IN) -> IN 窗口函數基本上僅從它可以發出的窗口緩沖區中獲取一個元素。

如果我們想要有效的折疊,事情會變得稍微復雜一些,因為我們需要窗口緩沖區接收IN類型的元素,但是發出OUT類型,並且窗口函數看起來像這樣: OUT -> OUT

可以做到,但是現在還沒有實現。 (順便說一句,我為此打開了一個《吉拉問題》: https : //issues.apache.org/jira/browse/FLINK-2991

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM