Flink DataStream之min()与minBy(),max()与max之间的区别

Flink DataStream之min()与minBy(),max()与max之间的区别

min():获取的最小值,指定的field是最小,但不是最小的那条记录,后面的示例会清晰的显示。

minBy():获取的最小值,同时也是最小值的那条记录。

max()与maxBy()的区别也是一样。

那么下面来看示例:

public class MinOrMinByOperator {

    public static void main(String[] args) throws Exception {

        StreamExecutionEnvironment sEnv = StreamExecutionEnvironment.getExecutionEnvironment();
        sEnv.setParallelism(1);

        Properties p = new Properties();
        p.setProperty("bootstrap.servers", "localhost:9092");

        DataStreamSource<String> source = sEnv.addSource(new FlinkKafkaConsumer010<String>("student", new SimpleStringSchema(), p));

        source.print();

        WindowedStream<Student, String, TimeWindow> windowedStream = source
                .map(new MapFunction<String, Student>() {
                    @Override
                    public Student map(String value) throws Exception {
                        return new Gson().fromJson(value, Student.class);
                    }
                })
                .keyBy(new KeySelector<Student, String>() {
                    @Override
                    public String getKey(Student value) throws Exception {
                        return value.sid;
                    }
                })
                .timeWindow(Time.minutes(1));

        SingleOutputStreamOperator<Student> min = windowedStream.min("age");
        min.print("min  :");

        SingleOutputStreamOperator<Student> minBy = windowedStream.minBy("age");
        minBy.print("minBy:");

        sEnv.execute("MinOrMinByOperator");
    }
}

模拟几条数据,输出结果如下

image

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值