此外,在事件时间,场景下,如果一个 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*
