apache-flink - Flink:将事件附加到有限数据流的末尾
问题描述
假设有一个带有事件的有限 DataStream(例如来自数据库源)
a1, a2, ..., an
.
如何在b
此流中再追加一个事件以获取
a1, a2, ..., an, b
(即在所有原始事件之后输出添加的事件,保留原始顺序)?
我知道所有有限的流都会发出MAX_WATERMARK
毕竟事件。那么,有没有办法“捕捉”这个水印并在它之后输出附加事件?
(不幸的是,.union()
将原始 DataStream 与另一个 DataStream 组成一个事件(时间戳设置为Long.MaxValue
)然后使用此答案对联合流进行排序不起作用。)
解决方案
也许我遗漏了一些东西,但似乎你可以简单地拥有一个 ProcessFunction 并为遥远的将来某个地方设置一个事件时间计时器,这样它只会在 MAX_WATERMARK 到达时触发。然后在 onTimer 方法中,如果 currentWatermark 为 MAX_WATERMARK,则发出该特殊事件。
推荐阅读
- vba - 在两个比较范围内显示单元格值匹配的地址
- python - 如何在python中使用OpenCV拼接多个随机顺序的图像?
- dataframe - Holoviews 多边形输入
- javascript - 如何从javascript中的json数组中删除双引号
- c - 在c代码中取4位数字
- google-app-engine - 将 App Engine Flex 限制为仅在没有 App Engine 防火墙的情况下进行内部访问?
- cognos - Cognos 条形图第二个轴条与第一个轴条重叠
- sql-server - 如何优化存储过程中的游标
- typescript - webpack找不到src,但它不应该在寻找它
- google-app-maker - 将转换器绑定到计算表达式