疑问点一:onElement是每条数据进来都会调用,当收到水印是会返回TriggerResult.FIRE ,其他情况都会registerEventTimeTimer,为什么不是注册一次就行,这样不会提高效率吗? 疑问点二:onEventTime也能触发TriggerResult.FIRE,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗 |
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,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗 |
你好:
感谢回复~ 针对说的第三点,数据是乱序的,但是这个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,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗 |
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,这个具体什么时候会触发?这个触发器不是只有水印达到会触发吗 |
Free forum by Nabble | Edit this page |