Flink官方例子解析:带窗口的WordCount

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. 简介

本篇介绍的是带窗口的WordCount使用窗口函数countWindow。
countWindow是一种计数窗口有固定窗口和滑动窗口两种用法。

1.1 固定窗口

countWindow(windowSize) , windowSize指的是窗口大小。
例如countWindow(5) 说明一个窗口可以容纳5个元素对象当元素的个数达到5个时触发计算。

1.2 滑动窗口

countWindow(windowSize, slideSize) windowSize指的是窗口大小slideSize是滑动步长。
例如countWindow(5, 2) 说明一个窗口可以容纳5个元素对象窗口每进来2个元素都会触发计算当元素的个数达到5个时也会触发计算。

2. countWindow WordCount需要实现的功能

  1. 监听指定目录下的文件读取文件的文本内容如果未指定监听路径则读取静态的字符串变量
  2. 分词
  3. 每个单词每出现2次输出一次当频率达到5次时输出一次
  4. 把结果打印输出

参数说明
--input 指定监听目录 非必填
--output 指定结果输出的文件路径 非必填
--discovery-interval 指定监听的间隔时间 非必填
--execution-mode 指定Flink的执行模式非必填默认为STREAMING模式
--windowSize 窗口大小非必填默认250
--slideSize 滑动步长非必填默认150

3. 代码实现

DataStream<Tuple2<String, Integer>> counts =      
        text
        // 分词处理等到二元组 (word, 1) , 
        .flatMap(new WordCount.Tokenizer())  
        .name("tokenizer")  
        // 按单词分组f0指的是二元组中的第一个字段       
        .keyBy(value -> value.f0)  
        // 设置滑动窗口  
        .countWindow(windowSize, slideSize)  
        //对二元组的第二个字段累加               
        .sum(1)  
        .name("counter");

获取完整代码请参考文章: Flink官方例子解析Flink源码子项目flink-examples

4. 执行效果

4.1 在IDEA IntelliJ中配置程序的参数

在这里插入图片描述

--window 5 --slide 2

5. 结语

本篇到此结束欢迎订阅Flink专栏学习更多Flink的相关知识。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6