前言:公司在用flink,最近学了下,既然学了我就写了下博客,既能自己加深下印象方便自己查看,也希望可以帮助到大家。
1、什么是flink
flink是分布式的计算引擎
支持批处理,即处理静态的数据集、历史的数据集
支持流处理,即实时地处理一些实时数据流
支持基于事件的应用【比如说滴滴通过Flink CEP实现实时监测司机的行为流来判断司机的行为是否正当】
2、流程图
3、为什么用flink呢?
流数据更真实的反应了我们的数据,传统的数据架构是基于有限的数据集的,而flink可以做到低延迟、高吞吐和结果的准确性和容错性。
4、flink的简单使用
4.1批处理
public class WordCount {
public static void main(String[] args) throws Exception {
//创建执行环境
ExecutionEnvironment en=ExecutionEnvironment.getExecutionEnvironment();
//从文件中读取数据
String path="E:\\flink\\src\\main\\resources\\hello.txt";
//数据集
DataSet<String> dataSet = en.readTextFile(path);
//处理数据集
DataSet<Tuple2<String,Integer>> resultSet= dataSet.flatMap(new MyFlatMapper())
.groupBy(0).sum(1);
resultSet.print();
}
public static class MyFlatMapper implements FlatMapFunction<String, Tuple2<String,Integer>>{
@Override
public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) throws Exception {
String words[]= s.split(" ");
for(String word:words){
collector.collect(new Tuple2<>(word,1));
}
}
}
}
4.2、流数据处理
public class StreamWordCount {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment executionEnvironment=StreamExecutionEnvironment.getExecutionEnvironment();
String path="E:\\flink\\src\\main\\resources\\hello.txt";
//数据集
DataStreamSource<String> dataStreamSource = executionEnvironment.readTextFile(path);
//基于数据流进行转换计算
DataStream<Tuple2<String,Integer>> dataStream=dataStreamSource.flatMap(new WordCount.MyFlatMapper())
.keyBy(0)
.sum(1);
dataStream.print();
executionEnvironment.execute();
}
}
4.3、maven的依赖
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka-0.11_2.12</artifactId>
<version>1.10.1</version>
</dependency>
</dependencies>
4.4、文本文件
hello.txt文件,我直接放项目中的resource下
1,1.2,33
1,2.2,334
1,3.2,3344
2,13.3,11
2,23.3,112
2,33.3,422
1,1.2,33
1,1.2,33
2,1.2,33
结***尾:flink的入门,下次更新flink的linux环境搭建和部署***