flink中max和maxBy区别

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

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
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值