max只会显示指定字段的大小变化,而maxBy会显示其他字段的变化,总体来说都是根据指定字段比大小,直接上例子吧:
数据
id,timeStamp,temperature
sensor_1,1,1
sensor_1,2,2
sensor_1,3,32
sensor_1,4,4
sensor_1,5,5
sensor_1,22,6
sensor_1,22,99
代码
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);//并行度1,只开放一个slot
String inputPath = "T:\\ShangGuiGu\\FlinkDemo\\src\\main\\resources\\sensor.txt";
DataStream<String> inputStream = env.readTextFile(inputPath);
DataStream<SensorReading> dataStream = inputStream.map(line -> {
String[] fields = line.split(",");
return new SensorReading(fields[0], new Long(fields[1]), new Double(fields[2]));
});
KeyedStream<SensorReading, String> keyedStream = dataStream.keyBy(SensorReading::getId);
keyedStream.max("temperature").print("max");
keyedStream.max

本文通过实例代码展示了Apache Flink中`max`与`maxBy`的区别。`max`返回指定字段的最大值,但其他字段保持不变,而`maxBy`在找到最大值时会保留所有字段的对应最大值状态。观察到`maxBy`会更新时间戳(timeStamp)字段,而`max`则不更新。
最低0.47元/天 解锁文章
777





