对于以上代码,我们进行keyby之后,我们new 了对象,我们会以为里面所有的数据都是独一份,和别的key是隔离的。
所以利索当然的:这个类型对象的属性:ExitLessonCountMessage有classId,lessonId,studentId 我们也会认为是独一份和别的keyby之后的数据不重用。
当我们入下图我们在定时器触发的时候。用了classId,lessonId,studentId 一直不是自己想要的数据, 导致数据混乱,百思不得其解。
最后经过反复看源码。我们虽然keyBy 之后 并且new ExitLessonCountMessage对象。但是在flink中,假如有对象在,就不会重新new 对象,而是直接重复使用。
这样就会导致里面的属性classId,lessonId,studentId 一直都被重用,当你定时器触发的时候就是最后定时器触发前的最后一条记录。而不是我们自己原来存的值。
? ? 在创建定时器的时候把这三个属性放到状态里面存储,定时器触发的时候取出来。这时候一定是唯一的,一定是你想要的。
? 在我们触发定时器时,我们从定时器的上下文中再取一次数据,赋值给lessonId,studentId,这样下面用到的值肯定就是我们定时器触发所需要的数据。
注意:第二种情况,只适合我们所需要的数据在key中,我们才能取到。要不然只能用第一种方法
1.flink快就是因为在很多种情况下代码是重用的。(例如迭代器,keyby之后对象的属性)
2.keyby之后并不会把所有的变量,对象,数据隔离。
?
?
?
?
背景 ASP.NET Core Identity 是一个完整的全功能身份验证提供程序,用于创建和维...
简介 测试Web服务时,可以直接在IntelliJ IDEA代码编辑器中创建,编辑和执行HTTP...
python合成Excel表多sheet 使用xlrd模块和xlwt模块 解题思想xlwt模块是非追加写....
写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删...
前言 最近公司有需求需要制作自定义二维码打开小程序,且该二维码要传递一些自定...
1.每部电影动人的一瞬间都可能是你憧憬过的一个人生片段,与其说是你被那个情节...
本文利用ajax技术从数据库中获取数据,动态实现select三级联动,效果图如下: 前...
命令简介 iotop 命令用来查看磁盘 I/O 使用状况的工具。iotop 具有与 top 相似的...
首先,肯定是注册成为 开发者新浪微博开放平台 选择网站应用,填写一些基本信息 ...
在移动开发中,下拉弹框是一种很常见的选择交互方式,效果如下图所示。 对于这种...