问题描述
在Apache Flink中,setAutoWatermarkInterval(interval)
向下游操作员生成水印,以便他们延长事件时间。
如果在指定的时间间隔内未更改水印(没有事件到达),运行时将不会发出任何水印?另一方面,如果在下一个时间间隔之前到达新事件,则会立即发出新水印,或者将其排队/等待直到到达下一个setAutoWatermarkInterval间隔。
我对最佳配置 AutoWatermarkInterval (特别是高速率信号源)感到好奇:此值越小,处理时间和事件时间之间的延迟就越小,但是在发送水印使用更多带宽的开销。那是真的吗?
另一方面,如果我使用env.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime),Flink运行时将自动分配时间戳和水印(时间戳对应于事件进入Flink数据流管道的时间,即源操作符),尽管如此ingestionTime我们仍然可以定义一个处理时间计时器(在processElement函数中),如下所示:
long timer = context.timestamp() + Timeout.
context.timerService().registerProcessingTimeTimer(timer);
其中context.timestamp()是Flink设置的摄取时间。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)