Flink 快速应用
通过一个单词统计的案例,快速上手应用Flink,进行流处理(Streaming)和批处理(Batch)
示例代码: https://gitee.com/ixinglan/flink-demo.git
第 1 节 单词统计案例(批数据)
1.1 需求
统计一个文件中各个单词出现的次数,把统计结果输出到文件
1.2 代码实现
-
引入依赖
<!--flink核心包--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>1.7.2</version> </dependency> <!--flink流处理包--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.12</artifactId> <version>1.7.2</version> <scope>provided</scope> </dependency>
示例代码:batch/WordCount
第 2 节 单词统计案例(流数据)
2.1 需求
Socket模拟实时发送单词,使用Flink实时接收数据,对指定时间窗口内(如5s)的数据进行聚合统计,每隔1s汇总计算一次,并且把时间窗口内计算结果打印出来。
使用 netcat 工具模拟socket不断发送数据
2.2 代码实现
示例代码:stream/WordCount
Flink程序开发的流程总结如下:
1)获得一个执行环境
2)加载/创建初始化数据
3)指定数据操作的算子
4)指定结果数据存放位置
5)调用execute()触发执行程序
注意:Flink程序是延迟计算的,只有最后调用execute()方法的时候才会真正触发执行程序