美图欣赏:
Flink编程模型
每个Flink程序都包含以下若干流程
1、获取执行环境
2、加载、创建初始数据 source
3、转换数据 transformation
4、放置计算结果位置 sink
5、触发程序运行
package flink;
/**
* Author : Jackson
* Version : 2020/1/30 & 1.0
*/
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;
/**
* Created by root on 2019/11/27.
*/
public class Flink {
public static void main(String[] args) throws Exception {
//获取运行环境
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
//数据源
DataSet<String> text = env.fromElements("I have a good friend. She is a very nice person. The first time I saw her at school, she smiled at me and I like her a lot. When we do homework in a team, we become friends. As we share the same interest, we are close. Now we often hang out for fun and we cherish our friendship so much.");
/**
* transfromation
*/
DataSet<Tuple2<String,Integer>> wordCount = text.flatMap(new LineSplitter()).groupBy(0).sum(1);
//打印
wordCount.print();
// env.execute();
}
public static class LineSplitter implements FlatMapFunction<String, Tuple2<String,Integer>>{
@Override
public void flatMap(String line, Collector<Tuple2<String, Integer>> out) throws Exception {
for (String word: line.split(" ")){
out.collect(new Tuple2<>(word,1));
}
}
}
}
1、Environment
执行环境 StreamExecutionEnvironment 是所有flink程序的基础
创建执行环境有三种方式,分别为:
StreamExecutionEnvironment.getExecutionEnvironment
StreamExecutionEnvironment.createLocalEnvironment
StreamExecutionEnvironment.createRemoteEnvironment
2、加载、创建初始数据
在StreamExecutionEnvironment中,提供了不同数据接入接口
3、转换数据
Flink中的Transformation都是通过不同的Operation来实现。
每个Operation内部通过实现Function接口完成数据处理逻辑定义。
4、输出接口
writeAsText print
flink提供了大量 connect操作,方便与外部系统交互
5、程序触发
需要调用 ExecutionEnvironment 的 execute 方法来触发。
DataSet Api中,已经包含了 execute
运行的结果:
————保持饥饿,保持学习
Jackson_MVP