新版本的Watermark触发边界不一样了吗

来源:16-6 新版本WM的用法

端碗吹水

2022-02-20

老版本是输入 4999,a,1 时就触发窗口的全量计算,新版本则是输入 5000,a,1 时才触发窗口的全量计算

代码如下:

public static void example(StreamExecutionEnvironment env) {
    // 当前版本的写法
    var lines = env.socketTextStream("localhost", 9527)
            .assignTimestampsAndWatermarks(
                    WatermarkStrategy.<String>forBoundedOutOfOrderness(Duration.ofSeconds(0))
                            .withTimestampAssigner((element, timestamp) -> Long.parseLong(element.split(",")[0]))
            );

    doCompute(lines);
}

nc命令的输入:

1000,a,1
2000,a,1
4999,a,1
5000,a,1

控制台输出:

---------reduce invoked---------
a ==> 2
---------reduce invoked---------
a ==> 3
21> [1970-01-01 08:00:00, 1970-01-01 08:00:05] f0: a f1: 3


写回答

1回答

Michael_PK

2022-02-20

对的,新老版本wm的边界触发条件是不一样了,这个你可以看下本课程的新老API的对比

0
2
Michael_PK
回复
端碗吹水
你可以看下源码,我没记错的话 有个 1 的差别
2022-02-22
共2条回复

Flink+ClickHouse 玩转企业级实时大数据开发

已经在做大数据,Flink助力轻松提薪;尚未入行,让你弯道超车

1000 学习 · 225 问题

查看课程