我有一个流被 FlinkKafkaConsumer 消耗,它将被加入使用另一个流来定义窗口大小,例如时间.毫秒(10000)。
如何在运行时将窗口大小更改为时间.毫秒(20000)?
Stream1.join(Stream2)
.where(new SingleValueSensorKeySelector())
.equalTo(new GPSKeySelector())
.window(TumblingEventTimeWindows.of(Time.milliseconds(10000)))
.apply(joinStreamFunc).addSink(kafkaProducer);
无法在运行时更改窗口大小。
你可以做几件事,尽管两者都不是很有吸引力。您可以在某种 ProcessFunction 之上实现自己的窗口。或者,您可以复制所涉及的流,并行进行这两种窗口,然后动态控制哪个窗口的结果转到接收器。
实现自己的窗口将是一项不小的工作量,并且花费资源来计算这两组窗口听起来很昂贵。