在Flink中处理事件时间有两种方式:Event Time和Processing Time。
示例代码:
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
DataStream<MyEvent> stream = env.addSource(new MyEventSource())
.assignTimestampsAndWatermarks(new MyEventTimestampExtractor());
stream.keyBy(MyEvent::getKey)
.timeWindow(Time.minutes(1))
.reduce((a, b) -> a.count + b.count)
.print();
示例代码:
env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime);
DataStream<MyEvent> stream = env.addSource(new MyEventSource());
stream.keyBy(MyEvent::getKey)
.timeWindow(Time.minutes(1))
.reduce((a, b) -> a.count + b.count)
.print();
根据实际业务需求和数据特点,选择合适的事件时间模式来处理数据。 Event Time适合处理乱序和延迟数据,而Processing Time适合实时计算和简单场景下的数据处理。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: flink程序怎么读取配置文件