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实现多线程数据分片下载
下一篇:
中级前端工程师要回的知识