Flink Streaming流式滑动窗口单词计数_With IntelliJ IDEA
文章目录
1. 需求分析
任务描述:
手工模拟流式数据产生,通过socket实时产生一些单词,使用Flink实时接收数据,对指定时间窗口内(例如:2秒)的数据进行聚合统计,并且把时间窗口内计算的结果打印出来。
Flink程序开发步骤
-
获得一个执行环境
-
加载/创建 初始化数据
-
指定操作数据的transaction算子
-
指定把计算好的数据放在哪
-
调用execute()触发执行程序
【注意】Flink程序是延迟计算的,只有最后调用execute()方法的时候才会真正触发执行程序。(跟Spark中算子的执行一样,都可以称为懒(lazy)执行)。
延迟计算的好处:在开发一个复杂程序时,Flink可以讲复杂的程序转化成一个执行计划,将执行计划作为一个整体的单元执行!(提高计算效率)
执行环境
-
Ubuntu 18.04
-
Java 1.8
-
Flink 1.9.1
-
Maven 3.3.9
2. 启动Flink
进入Flink的安装目录
cd /usr/local/flink
./bin/start-cluster.sh
用jps
查看启动的java线程,可以看到TaskManagerRunner和StandaloneSessionClusterEntrypoint已启动。
3. 在IntelliJ IDEA中开发调试SlidingWindowWordCount程序
3.1 新建Project
启动进入IDEA,如下图所示,新建一个项目。
执行如下图所示的操作:(注意不要勾选"Create from archetype"前面的小方框)
如下图所示,填写GroupId和ArtifactId。这里的GroupId是cn.stu.silver ,ArtifactId是streaming-wordcount。
这时生成的项目目录结构如下图所示。
3.2 修改pom.xml
该程序依赖Flink Java API,因此,我们需要通过Maven进行编译打包。打开pom.xml,然后,将pom.xml内容修改如下,用来声明该独立应用程序的信息以及与Flink的依赖关系:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.stu.silver</groupId>
<artifactId>streaming-wordcount</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>