亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Flink 流媒體,“sum”到底是做什么的?

Flink 流媒體,“sum”到底是做什么的?

哈士奇WWW 2022-07-20 16:49:08
我無法理解流式傳輸,以工作計數為例,對于像 Kafka 這樣的無限源,“sum”到底是做什么的?DataStream<Tuple2<String, Long>> counts = input                 ......                 .returns(Types.TUPLE(Types.STRING, Types.LONG))                 .keyBy(0)                 .sum(1);當有時間窗口時我有點理解,對我來說就像一個“批次”,因為它有開始和結束時間,但是當根本沒有時間窗口時,開始時間和結束時間是什么時候?當 Flink 第三次接收到單詞 'foo' 時,'sum' 是否會遍歷所有舊的 'foo',做 1+1+1,并給出結果 '3'?;蛘撸現link 以某種方式在上一步中保存了一個中間結果 '2',所以 'sum' 只做 2+1?有沒有另一種方法來求和,我的意思是,使用 keyBy(0).process(...) 什么的?
查看完整描述

1 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

指定的程序將轉換為StreamGroupedReduce帶有SumAggregator. 它將做的StreamGroupedReduce是不斷減少傳入的數據流并在每個傳入記錄之后輸出新的減少值。

在內部,StreamGroupedReduce使用 aValueState來保持當前的減少值。每當有新記錄到達時,當前的 reduce 值都會通過調用ReduceFunction(在您的情況下SumAggregator)與傳入記錄相結合。然后,此操作的結果存儲在操作員中ValueState并輸出到下游消費者。

例如:輸入流1, 2, 3, 4, 5在求和時會產生如下輸出:1, 3, 5, 9, 14.

如果需要,您可以使用keyBy(0).process(...).


查看完整回答
反對 回復 2022-07-20
  • 1 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號