首页 > 解决方案 > Flink 在运行时更改流窗口大小

问题描述

我有一个流被 FlinkKafkaConsumer 消耗,它将与另一个流连接以定义窗口大小,例如 Time.milliseconds(10000)。

如何在运行时将窗口大小更改为 Time.milliseconds(20000)?

Stream1.join(Stream2) 
     .where(new SingleValueSensorKeySelector()) 
     .equalTo(new GPSKeySelector()) 
     .window(TumblingEventTimeWindows.of(Time.milliseconds(10000))) 
     .apply(joinStreamFunc).addSink(kafkaProducer);

标签: apache-flinkflink-streaming

解决方案


窗口大小不能在运行时更改。

您可以做几件事,但都不是很有吸引力。您可以在某种 ProcessFunction 之上实现自己的窗口。或者您可以复制所涉及的流,让两种窗口并行进行,然后动态控制哪个窗口的结果进入接收器。

实现自己的窗口化将是一项非常重要的工作,并且将资源用于计算两组窗口听起来很昂贵。


推荐阅读