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啊。
>>
>> 这三个问题有点疑惑,大神们帮忙看下!
>> 感谢!
>>
>

回复