你好,我正在Kafka会话窗口上工作,非活动时间为5分钟。我想要一些反馈,当达到非活动时间时,会话会因按键而降低。假设我有
(A,1)
记录“A”是键的位置。现在,如果我在5分钟内没有获得任何“A”键记录,则会话将被删除。
我想在会话结束时做一些操作,比如说(值)*2。有没有什么方法可以通过Kafka Stream API实现这一点
Kafka Streams不会在间隙时间过去后删除会话。相反,如果在间隙时间过去后,另一条具有相同密钥的记录到达,则if将创建一个新的会话,并并行维护两个会话。这允许处理无序数据。如果无序数据落入间隙并“连接”两个会话,甚至可能发生这两个会话合并的情况。
默认情况下,会话将保持1天。您可以通过SessionWindows#till()
方法更改此设置。如果会话过期,它将被无声地删除。没有通知。您还需要考虑配置参数<代码>窗口。百货商店改变日志附加的保持ms:
默认保留设置为Windows#maintainMs()1天。可以通过指定StreamsConfig覆盖此设置。在StreamsConfig中设置窗口、存储、更改、日志、附加、保留、管理和配置。
因此,如果你想在时间流逝时做出反应,你应该查看一些标点符号,这些标点符号允许你根据“平均时间进度”或挂钟时间来注册常规回调(某种计时器)。如果某个会话在一段时间内没有更新,并且您认为该会话“已完成”,则可以做出反应。
我们正在使用Kafka流的会话窗口来聚合相关事件的到达。除了聚合之外,我们还使用API指定窗口的保留时间。流信息: 会话窗口(非活动时间)为1分钟,传递到的保留时间为2分钟。我们使用定制的来映射事件的时间。 示例: 事件:e1;事件时间:上午10:00:00;到达时间:下午2点(同一天) 事件:e2;事件时间:上午10:00:30;到达时间:下午2:10(同一天) 第二个事件的到达时间是e1到达后
我已经能够创建一个“会话开始信号”流,如本答案所述。 是否可以在每次窗口聚合结束时创建一个“会话结束信号”流?
我有一个关于Kafka流的时间窗的问题,有些概念真的让我困惑。 我们有一个主题每天获得1000万个事件,我们有6天的日志保留,所以总的主题包含6000万个事件。 现在,我创建了一个KTable,我正在执行load all操作并迭代事件。正如我之前提到的,实际上我们只是当前的事件,而不是6千万事件,所以我在KTable定义中窗口化了这些数据。 现在,当我用以下语句加载所有事件时,一切都运行良好。 问
我有两个流,希望将第二个流连接到窗口内的第一个流,因为我需要对与会话相关的两个流的连接进行一些计算(流的连接控制会话)。 实际上,当从留档读取时,(会话)窗口只允许在单个流上进行计算,而不允许在连接中进行计算。 我曾尝试使用会话窗口和协处理器函数的组合,但结果并不完全符合我的预期。 有没有办法合并Flink中与会话窗口相关的两个流?
有人能帮我理解一下在flink中的窗口(会话)是什么时候和如何发生的吗?或者样品是如何加工的? 例如:假设定义的时间窗口是30秒,如果一个事件在t时间到达,另一个事件在t+30,那么这两个事件都将被处理,但是在t+31到达的事件将被忽略。 如果我说的不对,请纠正。 上面的问题是:如果一个事件在t时间到达,而另一个事件在t+3时间到达,是否还会等待整个30秒来汇总并最终确定结果? DTO: ====
我们有多个具有不同业务事件(页面视图、单击、滚动事件等)的输入主题。据我所知,Kafka流都有一个事件时间戳,可用于KStream与其他流或表的连接以对齐时间。 我们要做的是:合并用户id(即按用户id分组)的所有不同事件(源自上述不同主题),并对其应用会话窗口。 这应该通过在包含所有事件的流上使用,然后使用(在此指定非活动时间)来实现。这个组合流必须按照事件时间的顺序(或者以上kafka流方法尊