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

回复