如果我将我的时间特征设置为IngestionTime,我需要设置assignTimestampsAndWatermarks吗?
假设我将流执行环境的时间特性设置为摄取时间,如下所示
streamExecutionEnvironment.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime);
我需要给datastream.assignTimestampsAndWatermarks(AscendingTimestampExtractor)
打电话吗?
我认为只有当时间特征是事件时间时,datastream.assignTimestampsAndWatermarks
才是强制性的。不是吗?如果没有,我想知道如何在分布式环境中设置AscendingTimestampExtractor
?有没有办法在没有任何分布式锁的情况下添加单调递增长度(AscendingTimestampExtractor)?
发布于 2020-03-10 15:40:44
不需要,在使用摄取时间时不需要调用assignTimestampsAndWatermarks
。对于摄取时间,Flink会自动分配时间戳和水印。
此外,在做水印时,永远不需要担心分布式锁定。每个本地实例根据其对本地流的了解在本地分配水印。对于AscendingTimestampExtractor
,时间戳在每个实例中单调递增就足够了。
https://stackoverflow.com/questions/60610985
复制相似问题