说明
在 flink1.12.x 中,DataSet不推荐使用了
官方文档:
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/batch/
java代码
package top.malaoshi;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;
public class Main {
public static void main(String[] args) throws Exception {
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<String> ds = env.fromElements(
"Who's there?",
"I think I hear them. Stand, ho! Who's there?");
DataSet<Tuple2<String, Integer>> wordCounts = ds
.flatMap(new LineSplitter())//拆分、并记为1,每个元素是 (单词,1)
.groupBy(0)//按照第一个元素(即:单词)分组
.sum(1);//按照第二个元素聚合
wordCounts.print();
}
public static class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
/**
*
* @param line 表示每一行数据
* @param out 返回的数据
*/
@Override
public void flatMap(String line, Collector<Tuple2<String, Integer>> out) {
for (String word : line.split(" ")) {
out.collect(new Tuple2<String, Integer>(word, 1));
}
}
}
}
执行结果
(yarn,2)
(hadoop,3)
(flink,2)
(hdfs,1)