# Flink 快速应用


<!--more-->


通过一个单词统计的案例，快速上手应用Flink，进行流处理（Streaming）和批处理（Batch）

示例代码： https://gitee.com/ixinglan/flink-demo.git

## 第 1 节 单词统计案例（批数据）

### 1.1 需求

​		统计一个文件中各个单词出现的次数，把统计结果输出到文件

### 1.2 代码实现

  * 引入依赖

    ```xml
    <!--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()方法的时候才会真正触发执行程序**






















