packagecom.jackray.soullan.flink;importorg.apache.flink.api.common.functions.FlatMapFunction;importorg.apache.flink.api.java.ExecutionEnvironment;importorg.apache.flink.api.java.operators.AggregateOperator;importorg.apache.flink.api.java.operators.DataSource;importorg.apache.flink.api.java.operators.FlatMapOperator;importorg.apache.flink.api.java.operators.UnsortedGrouping;importorg.apache.flink.api.java.tuple.Tuple2;importorg.apache.flink.util.Collector;publicclassWordCount{publicstaticvoidmain(String[] args)throwsException{// todo 1、创建集群环境ExecutionEnvironment executionEnvironment =ExecutionEnvironment.getExecutionEnvironment();// todo 2、读取数据、从文件中读取DataSource<String> stringDataSource = executionEnvironment.readTextFile("input/mydata.txt");// todo 3、切分、转换(word 1), 基于interface写一个匿名类FlatMapOperator<String,Tuple2<String,Integer>> wordAndOne = stringDataSource.flatMap(newFlatMapFunction<String,Tuple2<String,Integer>>(){publicvoidflatMap(String value,Collector<Tuple2<String,Integer>> out)throwsException{// todo 3.1 按照空格切分数组String[] words = value.split(" ");for(String word : words){Tuple2<String,Integer> wordTuple2 =Tuple2.of(word,1);// todo 3.2 使用collector 向下下游发送数据
out.collect(wordTuple2);}}});// todo 4、各分组内聚UnsortedGrouping<Tuple2<String,Integer>> wordAndOneGroupBy = wordAndOne.groupBy(0);// todo 5、各个分组内聚合AggregateOperator<Tuple2<String,Integer>> sum = wordAndOneGroupBy.sum(1);//这里的1是位置// todo 6、输出
sum.print();}}