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");
    }
} 
模拟几条数据,输出结果如下
上一篇:
			            JS实现多线程数据分片下载 
			          
			          下一篇:
			            中级前端工程师要回的知识 
			          
			        