EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

840124434
疑问点一:onElement是每条数据进来都会调用,当收到水印是会返回TriggerResult.FIRE ,其他情况都会registerEventTimeTimer,为什么不是注册一次就行,这样不会提高效率吗?
疑问点二:onEventTime也能触发TriggerResult.FIRE,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗
Reply | Threaded
Open this post in threaded view
|

RE: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

Shi Quan
Hi,
这里是我之前对Window、State、Watermark三者关系的一个总结https://blog.csdn.net/xianzhen376/article/details/90415350

同时你的问题引发了新的思考,因为之前并没有关注onWaterMark的处理。简单的过了下源码后,我这里抛砖引玉几点:

  1.  registerEventTimeTimer 并不是注册定时器,是一个很轻量的实现,实际上是一个Queue,记录以namespace和key为索引的window.maxTimestamp,此处的window表示Element event time所属的window,例如十分钟一个weindow,则05:03属于05:00-05:100, maxTimeStamp为05:10;
  2.  何时触发注册的信息?在porcessWatermark时,遍历上述Queue,如果注册的time大于Watermark,就会触发所有key的Window计算(这点和我之前理解的只处理单key 数据不同)
  3.  为什么只注册一次不行?在处理数据乱序情况下,一般current window小于Element所属的Window,同时随着time的上升,需要更新。
  4.  针对疑问二,如果time所属的window已经超过了curWindow.maxTimestamp就触发Element对应key的计算;

上面的几点还时很粗,对这块更熟悉的,或者有兴趣的,一起聊啊。

Best,
Quan Shi

From: 840124434<mailto:[hidden email]>
Sent: Saturday, June 22, 2019 7:36 PM
To: user-zh<mailto:[hidden email]>
Subject: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

[cid:62933D14@F8E87061.91120E5D]
疑问点一:onElement是每条数据进来都会调用,当收到水印是会返回TriggerResult.FIRE ,其他情况都会registerEventTimeTimer,为什么不是注册一次就行,这样不会提高效率吗?
疑问点二:onEventTime也能触发TriggerResult.FIRE,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗

Reply | Threaded
Open this post in threaded view
|

回复:RE: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

840124434
你好:
感谢回复~
针对说的第三点,数据是乱序的,但是这个onelement方法处理的都是属于该window的数据,所以注册的都是当前window的maxTimeStamp,不会注册其他的window,不知道说的对不对。




------------------ 原始邮件 ------------------
发件人: "Shi Quan"<[hidden email]>;
发送时间: 2019年6月24日(星期一) 中午11:07
收件人: "[hidden email]"<[hidden email]>;

主题: RE: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激



Hi,
这里是我之前对Window、State、Watermark三者关系的一个总结https://blog.csdn.net/xianzhen376/article/details/90415350

同时你的问题引发了新的思考,因为之前并没有关注onWaterMark的处理。简单的过了下源码后,我这里抛砖引玉几点:

  1.  registerEventTimeTimer 并不是注册定时器,是一个很轻量的实现,实际上是一个Queue,记录以namespace和key为索引的window.maxTimestamp,此处的window表示Element event time所属的window,例如十分钟一个weindow,则05:03属于05:00-05:100, maxTimeStamp为05:10;
  2.  何时触发注册的信息?在porcessWatermark时,遍历上述Queue,如果注册的time大于Watermark,就会触发所有key的Window计算(这点和我之前理解的只处理单key 数据不同)
  3.  为什么只注册一次不行?在处理数据乱序情况下,一般current window小于Element所属的Window,同时随着time的上升,需要更新。
  4.  针对疑问二,如果time所属的window已经超过了curWindow.maxTimestamp就触发Element对应key的计算;

上面的几点还时很粗,对这块更熟悉的,或者有兴趣的,一起聊啊。

Best,
Quan Shi

From: 840124434<mailto:[hidden email]>
Sent: Saturday, June 22, 2019 7:36 PM
To: user-zh<mailto:[hidden email]>
Subject: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

[cid:62933D14@F8E87061.91120E5D]
疑问点一:onElement是每条数据进来都会调用,当收到水印是会返回TriggerResult.FIRE ,其他情况都会registerEventTimeTimer,为什么不是注册一次就行,这样不会提高效率吗?
疑问点二:onEventTime也能触发TriggerResult.FIRE,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗
Reply | Threaded
Open this post in threaded view
|

RE: 回复:RE: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

Shi Quan
Hi,

你已经在阅读源码了,可以也看看InternalTimerServiceImpl和TimerHeapInternalTimer这两个类的实现,加深对这块的理解。

Best,
Quan Shi

From: 840124434<mailto:[hidden email]>
Sent: Monday, June 24, 2019 11:36 AM
To: user-zh<mailto:[hidden email]>
Subject: 回复:RE: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

你好:
感谢回复~
针对说的第三点,数据是乱序的,但是这个onelement方法处理的都是属于该window的数据,所以注册的都是当前window的maxTimeStamp,不会注册其他的window,不知道说的对不对。




------------------ 原始邮件 ------------------
发件人: "Shi Quan"<[hidden email]>;
发送时间: 2019年6月24日(星期一) 中午11:07
收件人: "[hidden email]"<[hidden email]>;

主题: RE: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激



Hi,
这里是我之前对Window、State、Watermark三者关系的一个总结https://blog.csdn.net/xianzhen376/article/details/90415350

同时你的问题引发了新的思考,因为之前并没有关注onWaterMark的处理。简单的过了下源码后,我这里抛砖引玉几点:

  1.  registerEventTimeTimer 并不是注册定时器,是一个很轻量的实现,实际上是一个Queue,记录以namespace和key为索引的window.maxTimestamp,此处的window表示Element event time所属的window,例如十分钟一个weindow,则05:03属于05:00-05:100, maxTimeStamp为05:10;
  2.  何时触发注册的信息?在porcessWatermark时,遍历上述Queue,如果注册的time大于Watermark,就会触发所有key的Window计算(这点和我之前理解的只处理单key 数据不同)
  3.  为什么只注册一次不行?在处理数据乱序情况下,一般current window小于Element所属的Window,同时随着time的上升,需要更新。
  4.  针对疑问二,如果time所属的window已经超过了curWindow.maxTimestamp就触发Element对应key的计算;

上面的几点还时很粗,对这块更熟悉的,或者有兴趣的,一起聊啊。

Best,
Quan Shi

From: 840124434<mailto:[hidden email]>
Sent: Saturday, June 22, 2019 7:36 PM
To: user-zh<mailto:[hidden email]>
Subject: EventTimeTrigger源码求帮忙解读,求各位大佬帮帮忙,不胜感激

[cid:62933D14@F8E87061.91120E5D]
疑问点一:onElement是每条数据进来都会调用,当收到水印是会返回TriggerResult.FIRE ,其他情况都会registerEventTimeTimer,为什么不是注册一次就行,这样不会提高效率吗?
疑问点二:onEventTime也能触发TriggerResult.FIRE,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗