这是一个已知的问题。社区已经有相关issue[1] 在跟进修复了,感兴趣的话可以了解下~
[1] https://issues.apache.org/jira/browse/FLINK-18934 jie mei <[email protected]> 于2021年4月12日周一 下午2:59写道: > 此外,在事件时间,场景下,如果一个 Stream A 有消息, 另一个 Stream B 没有消息进行 UNION ALL。那么 Stream B > 的消息永远是一个 Long.MIN_VALUE, 进行水印对其的时候,UNION ALL 后的水印取所有 CHANNEL 的最小水印,也就是 > Long.MIN_VALUE, 这就导致分组滚动窗口一致得不到计算。 > > jie mei <[email protected]> 于2021年4月12日周一 上午11:24写道: > > > 问题已经解决,因为我的 StreamEnv 默认设置为事件时间。去掉就可以了,这导致了watermark没有生成。 > > > > jie mei <[email protected]> 于2021年4月12日周一 上午1:49写道: > > > >> 大家好,我有一个 Flink 程序, 使用事件时间做分组窗口计算,但是无法触发窗口计算。我Debug到 WindowOperator, 下, > >> 发现 WindowOperator 的 TriggerContext中的当前水印一直是一个负数, StreamTaskNetworkInput > >> 中的 processElement 方法没有接受到 watermark 消息, recordOrMark.isWatermark() == > false。 > >> > >> 我自己的怀疑难道是事件时间每设置对? 但是对比了文档,应该是可以的。下面是我的 DDL > >> > >> create table input_table ( > >> `dim` varchar, > >> `server_time` bigint, > >> `event_time` AS TO_TIMESTAMP(FROM_UNIXTIME(server_time / 1000, > >> 'yyyy-MM-dd HH:mm:ss')), > >> WATERMARK FOR `event_time` AS `event_time` > >> ) > >> select TUMBLE_START(`event_time`, INTERVAL '1' SECOND) AS `log_time`, > >> `dim`, > >> count(1), > >> FROM input_table > >> GROUP BY TUMBLE(`event_time`, INTERVAL '1' SECOND),`dim` > >> > >> > >> > >> *Best Regards* > >> *Jeremy Mei* > >> > > > > > > -- > > > > *Best Regards* > > *Jeremy Mei* > > > > > -- > > *Best Regards* > *Jeremy Mei* > -- Best, Benchao Li
