在下面的代码中:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
SingleOutputStreamOperator<Tuple2<String, Integer>> dataStream = env.fromElements(
Tuple2.of("01", 1),
Tuple2.of("02", 2),
Tuple2.of("03", 3),
Tuple2.of("04", 4),
Tuple2.of("05", 5)
).assignTimestampsAndWatermarks(
WatermarkStrategy.<Tuple2<String, Integer>>forMonotonousTimestamps()
.withTimestampAssigner(
(tuple, ts) -> System.currentTimeMillis()));
env.execute("dfjghf")
env.execute("gghh");
flink-1.17.1, Java 11
这个有界流中将注入多少个水印?是5吗?
2) 如何打印这些水印元素?只是为了调试...
forMonotonousTimestamps
是一个周期性水印生成器,每 200 毫秒发出一次水印(默认情况下)。这项工作不会持续足够长的时间来实现这一目标。所以我希望在工作结束时只有一个水印。 (有关作业结束水印的更多信息,请参阅此答案。)
可以在 Flink Web UI 中检查水印——这是调试它们的最简单方法。否则,您可以通过传递到键控处理函数的
processElement
上 onTimer
方法的上下文来访问当前水印。