中实现此目标
我目前正在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(...)
请注意,没有时间。