一个简单的wordcount demo
public class BatchWordCount {
public static void main(String[] args) throws Exception {
String inputPath = "D:\\outputDir\\file.txt";
String outPath = "D:\\outputDir\\result.txt";
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
DataSource<String> source = env.readTextFile(inputPath);
AggregateOperator<Tuple2<String, Integer>> operator = source.flatMap(new Tokenizer()).groupBy(0).sum(1);
operator.writeAsCsv(outPath).setParallelism(1);
env.execute();
}
public static class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
Arrays.asList(value.split(" ")).forEach( i -> out.collect(new Tuple2(i, 1)));
}
}
}
从 env.execute(); 开始:

如果我们不指定名字会有一个默认的名种。execute方法会触发程序执行,本地运行环境会触发所有带有sink操作的流程

execute的关键在于创建程序的执行计划和使用执行器去执行这个任务计划
创建程序的执行计划:
创建程序计划,这个计划描述了所有的数据源,数据的sink操作和 中间的operations以及他们之间是如何交互的,整个作为一个独立的单元来被org.apache.flink.api.co


9509

被折叠的 条评论
为什么被折叠?



