flink1.12.x max() 和 maxBy() 区别

说明

max() 和 maxBy() 都是求最大值,但有区别

案例

输入下面格式的数据:

{"name":"lili","url":"/dior.html","time":"2020-09-01 12:00:00"}

根据 name 进行 keyBy(),然后 根据 time 执行 max() 和 maxBy() 操作

max() 执行过程

第一次输入

在kafka控制输入下面内容:

{"name":"lili","url":"/dior.html","time":"2020-09-01 12:00:00"}

执行结果

在 idea 控制台中打印结果如下:

1> UserLog{name='lili', url='/dior.html', time=Tue Sep 01 12:00:00 CST 2020}

解释:因为只有一条数据,所以就输出该条数据

第二次输入

在kafka控制输入下面内容:

{"name":"lili","url":"/lv.html","time":"2020-09-01 13:00:00"}

注意:用户名也是:lili,但时间是 2020-09-01 13:00:00

执行结果

在 idea 控制台中打印结果如下:

1> UserLog{name='lili', url='/dior.html', time=Tue Sep 01 13:00:00 CST 2020}

解释:输出结果中:

  • url 是 第一个数据的
  • time 是 第二个数据的,因为第二个数据的time更晚

关键:这是 max() 的特点

maxBy

第一次输入

在kafka控制输入下面内容:

{"name":"lili","url":"/dior.html","time":"2020-09-01 12:00:00"}

执行结果

在 idea 控制台中打印结果如下:

1> UserLog{name='lili', url='/dior.html', time=Tue Sep 01 12:00:00 CST 2020}

解释:因为只有一条数据,所以就输出该条数据

第二次输入

在kafka控制输入下面内容:

{"name":"lili","url":"/lv.html","time":"2020-09-01 13:00:00"}

注意:用户名也是:lili,但时间是 2020-09-01 13:00:00

执行结果

在 idea 控制台中打印结果如下:

1> UserLog{name='lili', url='/lv.html', time=Tue Sep 01 13:00:00 CST 2020}

解释: 由于第二次输入的数据,time 较晚,所以输出结果是 第二次的数据

关键:这是 maxBy() 与 max() 的区别


原文出处:/show_1IX48Aq2yIsj.html