Apache flink 如何处理flink流媒体中的未来事件?
我们正在计算一分钟滚动时间窗口内不同类型事件的最大并发计数 这些事件像传感器数据,这些数据是从我们的桌面代理每分钟收集的,然而,一些代理得到了一个错误的时间戳,比如说,它将是一个时间戳,甚至比现在晚了几个小时 所以,我的问题是如何处理/删除这些事件,目前我只是申请 筛选(s=>s.ct.getTimeApache flink 如何处理flink流媒体中的未来事件?,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我们正在计算一分钟滚动时间窗口内不同类型事件的最大并发计数 这些事件像传感器数据,这些数据是从我们的桌面代理每分钟收集的,然而,一些代理得到了一个错误的时间戳,比如说,它将是一个时间戳,甚至比现在晚了几个小时 所以,我的问题是如何处理/删除这些事件,目前我只是申请 筛选(s=>s.ct.getTimenow()) 调整时间戳(timestamp=min(timestamp,now()))或了解特定传感器关闭的原因(时区问题?) 使用更复杂的水印生成器 我认为前两种选择是直截了当的,我个人会选择
- 筛选无效事件(
)timestamp>now()
- 调整时间戳(
)或了解特定传感器关闭的原因(时区问题?)timestamp=min(timestamp,now())
- 使用更复杂的水印生成器
- 仅当看到水印大于当前水印的X个事件时,才使用高级水印
- 使用一些低通滤波器=慢速移动平均值
- 忽略timestamp>now()的事件(因此仅过滤水印生成)
- 筛选无效事件(
)timestamp>now()
- 调整时间戳(
)或了解特定传感器关闭的原因(时区问题?)timestamp=min(timestamp,now())
- 使用更复杂的水印生成器
- 仅当看到水印大于当前水印的X个事件时,才使用高级水印
- 使用一些低通滤波器=慢速移动平均值
- 忽略timestamp>now()的事件(因此仅过滤水印生成)
我很高兴听到您选择了哪种方式,我可以进一步帮助您。谢谢您的快速回复。目前,我正在使用一个从BoundedAutoFordernessTimestampExtractor继承的简单子类,只需记录一条警告消息,然后将时间戳设置为Long.MinValue,即可删除这些事件。因此,基本上,#2方法(调整时间戳和忽略时间戳>现在())感谢您的快速回复。目前,我正在使用一个从BoundedAutoFordernessTimestampExtractor继承的简单子类,只需记录一条警告消息,然后将时间戳设置为Long.MinValue,即可删除这些事件。因此基本上,#2方法(调整timestamp并忽略timestamp>now())