Hi, 補充一下第三個問題,merge 的用途是給所謂的 mergeable window 使用的 (i.e. SessionWindow) 舉個例子,當 SessionWindow 的時間間隔設定為 10s,如果收到 event A (ts = t1), event B (ts = t1 + 15s), 這個狀況下 event A, event B 會被當作是兩個 session。假如此時收到了一個 event C (ts = t1 + 5s), 且前兩個 window 都還沒被觸發處理,這個時候 event A, B, C 就會被 merge 成同一個 session。 這時調用的就會是 merge function 去把三者合併。
Best Tony Wei Px New <15701181132mr....@gmail.com> 於 2019年11月10日 週日 上午10:58寫道: > [image: image.png]建议深入解下 keyWindow,NoKeyWindow 与Assigner TimeWindow > And WindowsFunction 😃 > > Yuan,Youjun <yuanyou...@baidu.com> 于2019年11月9日周六 下午7:46写道: > >> 1, 是 >> 2,没有标准答案,是否可以本地先聚合? >> 3,AggFunc是指定做何种聚合,是sum, 还是avg, 还是count。不指定的话,Flink哪里指导你要计算啥? >> >> -----邮件原件----- >> 发件人: 王佩 <wang...@cmcm.com> >> 发送时间: Saturday, November 9, 2019 11:45 AM >> 收件人: user-zh <user-zh@flink.apache.org> >> 主题: Flink DataStream KeyedStream 与 AggregateFunction >> >> 请教下: >> >> 1、DataStream 如按用户ID KeyBy后,同一个用户ID的数据最终会被分到一个Partition中吗? >> >> 2、假设1成立,这样就会有数据倾斜的问题。该如何解决? >> >> 3、假设1成立,如: DataStream >> .keyBy(userID) >> .timeWindow(....) >> .aggregate(new >> AggregateFunction(.......)),这里的AggregateFunction >> 为啥还需要merge呢。因为同一个Key的数据只会在同一个Partition中被计算,觉得不需要merge啊。 >> >> 这三个问题有点疑惑,大神们帮忙看下! >> 感谢! >> >