该示例起初非常有用,它说明了keyedProcessFunction在Flink中如何工作有件事值得注意,突然传到我身上。来自欺诈检测器v2:状态+时间部分关于实际应用需求部分,在此处设置计时器是合理的]
override def onTimer(
timestamp: Long,
ctx: KeyedProcessFunction[Long, Transaction, Alert]#OnTimerContext,
out: Collector[Alert]): Unit = {
// remove flag after 1 minute
timerState.clear()
flagState.clear()
}
这里是问题:
由正在运行的计算机的系统时钟确定的TimeCharacteristic IS ProcessingTime,根据ProcessingTime属性,水印不会随时间变化,因此,除非TimeCharacteristic更改为eventTime,否则永远不会调用onTimer
根据flink网站:每小时处理时间窗口将包括系统时钟指示整小时的时间之间到达特定操作员的所有记录。例如,如果应用程序在9:15 am开始运行,则第一个每小时处理时间窗口将包括在9:15 am和10:00 am之间处理的事件,下一个窗口将包括在10:00 am和11:00 am之间处理的事件,依此类推。上。如果水印不随时间变化,是否会触发窗口功能?因为要触发窗口的条件是当水印进入窗口的结束时间时]
我想知道触发窗口或不触发窗口的条件不取决于priocessingTime中的水印,即使官方网站完全没有提及,它将基于触发窗口的处理时间] >
希望有人可以花一点时间,很多!
该示例起初非常有用,它说明了keyedProcessFunction在Flink中是如何工作的,有一点值得注意,它突然出现在我面前……它来自欺诈检测器v2:状态+时间...
Flink提供了两种计时器:
事件时间