Apache flink ApacheFlink-基于事件时间计算最后一个窗口

Apache flink ApacheFlink-基于事件时间计算最后一个窗口,apache-flink,stream-processing,Apache Flink,Stream Processing,我的工作是做以下事情: 根据事件时间使用卡夫卡主题中的事件 计算7天的窗口大小,以1天的幻灯片显示 将结果放入Redis 我有几个问题: 如果它使用最新记录中的Kafka事件,则在作业处于活动状态1天后,该作业将关闭窗口并计算7天窗口。问题是作业只有1天的数据,因此结果是错误的 如果我试着让它使用7天前的时间戳中的Kafka事件,当作业开始时,它会从第一天开始计算整个窗口,这需要很多时间。另外,我只想要最后一个窗口结果,因为这对我来说很重要 我错过什么了吗?有更好的方法吗?弗林克将时间窗口与时代

我的工作是做以下事情:

  • 根据事件时间使用卡夫卡主题中的事件
  • 计算7天的窗口大小,以1天的幻灯片显示
  • 将结果放入Redis
  • 我有几个问题:

  • 如果它使用最新记录中的Kafka事件,则在作业处于活动状态1天后,该作业将关闭窗口并计算7天窗口。问题是作业只有1天的数据,因此结果是错误的
  • 如果我试着让它使用7天前的时间戳中的Kafka事件,当作业开始时,它会从第一天开始计算整个窗口,这需要很多时间。另外,我只想要最后一个窗口结果,因为这对我来说很重要

  • 我错过什么了吗?有更好的方法吗?

    弗林克将时间窗口与时代对齐。因此,如果你有一个小时长的窗口,它们从一个小时的顶端运行到另一个小时的顶端。白天的窗户从午夜开到午夜。同样的原则也适用于七天长的窗户,因为新纪元开始于周四(1970年1月1日),七天长的窗户应该在周三晚上/周四早上的午夜关闭


    如果要将窗口移动到不同的时间开始,可以向窗口构造函数提供偏移量。

    Flink将时间窗口与历元对齐。因此,如果你有一个小时长的窗口,它们从一个小时的顶端运行到另一个小时的顶端。白天的窗户从午夜开到午夜。同样的原则也适用于七天长的窗户,因为新纪元开始于周四(1970年1月1日),七天长的窗户应该在周三晚上/周四早上的午夜关闭


    如果要将窗口移到其他时间启动,可以向窗口构造函数提供偏移量。

    我不确定您的问题出在哪里。窗口大小为7天,幻灯片大小为1天,这意味着窗口应在7天后关闭,但每天将创建新窗口。从您的帖子中可以看出,在收到数据1天后,整个7天窗口似乎都关闭了,这是不应该发生的。问题是,当我开始工作时,第一个事件以一周前的事件时间到达时,flink关闭窗口,并在此事件时间后一周内计算。您可以添加拓扑吗?可能是您的时间戳提取器和水印赋值器未按预期工作。如果你能给出一个你所看到的和你所期望的最简单的例子,这也会有所帮助。我不确定你的问题是什么。窗口大小为7天,幻灯片大小为1天,这意味着窗口应在7天后关闭,但每天将创建新窗口。从您的帖子中可以看出,在收到数据1天后,整个7天窗口似乎都关闭了,这是不应该发生的。问题是,当我开始工作时,第一个事件以一周前的事件时间到达时,flink关闭窗口,并在此事件时间后一周内计算。您可以添加拓扑吗?可能是您的时间戳提取器和水印赋值器未按预期工作。如果你能给出一个你所看到的和你所期望的最简单的例子,这也会有所帮助。但我的问题发生在我在00:30开始工作时,窗口持续了整整一个小时,然后它在01:00关闭窗口,结果只有窗口的一半。是的,这是完全正确的。弗林克不在乎工作什么时候开始,一个小时的窗口是12:00到1:00。例如,如果要将窗口移动30分钟,请使用可选的偏移参数。但我的问题发生在我在00:30开始作业,窗口持续一个小时,然后它在01:00关闭窗口,然后结果仅为窗口的一半。是的,这完全正确。弗林克不在乎工作什么时候开始,一个小时的窗口是12:00到1:00。例如,如果要将窗口移动30分钟,请使用可选的偏移参数。