单个数据流上的多个滑动窗口



我目前正在flink中解决一个问题,其中我必须为窗口尺寸的三个不同滑动窗口计算7天,14天和1个月的汇总功能。据我了解,我必须经营三个不同的消费者,上面提到的窗口尺寸。是否可以使用单个消费者代码来实现单个数据流的三个滑动窗口?一些使用flink实现此功能的代码或引用非常明显。

我所知道的:消费者1计算在7天大小的滑动窗口上消费者2计算在14天尺寸的滑动窗口上计算等等。我想要的是:消费者1同时计算所有这些滑动窗口,用于单个数据流

是否可以在Flink?

中实现此目标

各种窗口可以共享一个由Kafka消费者产生的单流,例如:

consumer = new FlinkKafkaConsumer<>("topic", new topicSchema(), kafkaProps);
stream = env.addSource(consumer);
w1 = stream.keyBy(key)
  .window(SlidingEventTimeWindows.of(Time.days(7), Time.days(1))
  .process(...)
w2 = stream.keyBy(key)
  .window(SlidingEventTimeWindows.of(Time.days(14), Time.days(1))
  .process(...)

或更有效,您可能会这样构建它:

consumer = new FlinkKafkaConsumer<>("topic", new topicSchema(), kafkaProps);
stream = env.addSource(consumer);
dayByDay = stream.keyBy(key)
  .window(TumblingEventTimeWindows.of(Time.days(1))
  .process(...)
w1 = dayByDay.keyBy(key)
  .window(SlidingEventTimeWindows.of(Time.days(7), Time.days(1))
  .process(...)
w2 = dayByDay.keyBy(key)
  .window(SlidingEventTimeWindows.of(Time.days(14), Time.days(1))
  .process(...)

请注意,没有时间。

相关内容

  • 没有找到相关文章

最新更新