目录

案例二 基于数量的滚动和滑动窗口

需求

代码实现


案例二 基于数量的滚动和滑动窗口

需求

需求1:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现5次进行统计--基于数量的滚动窗口

需求2:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现3次进行统计--基于数量的滑动窗口

代码实现

package cn.it.window;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;/*** Author lanosn* Desc* nc -lk 9999* 有如下数据表示:* 信号灯编号和通过该信号灯的车的数量
9,3
9,2
9,7
4,9
2,6
1,5
2,3
5,7
5,4* 需求1:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现5次进行统计--基于数量的滚动窗口* 需求2:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现3次进行统计--基于数量的滑动窗口*/
public class WindowDemo02_CountWindow {public static void main(String[] args) throws Exception {//1.envStreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();//2.SourceDataStreamSource<String> socketDS = env.socketTextStream("node1", 9999);//3.Transformation//将9,3转为CartInfo(9,3)SingleOutputStreamOperator<CartInfo> cartInfoDS = socketDS.map(new MapFunction<String, CartInfo>() {@Overridepublic CartInfo map(String value) throws Exception {String[] arr = value.split(",");return new CartInfo(arr[0], Integer.parseInt(arr[1]));}});//分组//KeyedStream<CartInfo, Tuple> keyedDS = cartInfoDS.keyBy("sensorId");// * 需求1:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现5次进行统计--基于数量的滚动窗口//countWindow(long size, long slide)SingleOutputStreamOperator<CartInfo> result1 = cartInfoDS.keyBy(CartInfo::getSensorId)//.countWindow(5L, 5L).countWindow( 5L).sum("count");// * 需求2:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现3次进行统计--基于数量的滑动窗口//countWindow(long size, long slide)SingleOutputStreamOperator<CartInfo> result2 = cartInfoDS.keyBy(CartInfo::getSensorId).countWindow(5L, 3L).sum("count");//4.Sink//result1.print();/*
1,1
1,1
1,1
1,1
2,1
1,1*/result2.print();/*
1,1
1,1
2,1
1,1
2,1
3,1
4,1*///5.executeenv.execute();}@Data@AllArgsConstructor@NoArgsConstructorpublic static class CartInfo {private String sensorId;//信号灯idprivate Integer count;//通过该信号灯的车的数量}
}

2021年大数据Flink(二十):案例二 基于数量的滚动和滑动窗口相关推荐

  1. 2021年大数据Flink(十九):案例一 基于时间的滚动和滑动窗口

    目录 案例一 基于时间的滚动和滑动窗口 需求 代码实现 案例一 基于时间的滚动和滑动窗口 需求 nc -lk 9999 有如下数据表示: 信号灯编号和通过该信号灯的车的数量 9,3 9,2 9,7 4 ...

  2. 2021年大数据Flink(十八):Flink Window操作

    目录 ​​​​​​​Flink-Window操作 为什么需要Window Window的分类 按照time和count分类 ​​​​​​​按照slide和size分类 ​​​​​​​总结 Window ...

  3. 2021年大数据Flink(十二):流批一体API Transformation

    目录 Transformation 官网API列表 基本操作-略 map flatMap keyBy filter sum reduce 代码演示 合并-拆分 union和connect split. ...

  4. 2021年大数据Flink(十五):流批一体API Connectors ​​​​​​​Kafka

    目录 Kafka pom依赖 参数设置 参数说明 Kafka命令 代码实现-Kafka Consumer 代码实现-Kafka Producer 代码实现-实时ETL Kafka pom依赖 Flin ...

  5. 2021年大数据Flink(十):流处理相关概念

    目录 流处理相关概念 数据的时效性 ​​​​​​​流处理和批处理 ​​​​​​​流批一体API DataStream API 支持批执行模式 API 编程模型 ​​​​​​​流处理相关概念 数据的时效 ...

  6. 2021年大数据Flink(十六):流批一体API Connectors ​​​​​​​​​​​​​​Redis

    目录 Redis API 使用RedisCommand设置数据结构类型时和redis结构对应关系 需求 代码实现 Redis API 通过flink 操作redis 其实我们可以通过传统的redis ...

  7. 2021年大数据Flink(十四):流批一体API Connectors JDBC

    目录 Connectors JDBC 代码演示 Connectors JDBC Apache Flink 1.12 Documentation: JDBC Connector 代码演示 package ...

  8. 2021年大数据Hive(十二):Hive综合案例!!!

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive综合案例 一.需求描述 二.项目表的字段 三.进 ...

  9. 2021年大数据HBase(十二):Apache Phoenix 二级索引

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Apache Phoenix 二级索引 一.索引分类 ...

最新文章

  1. http://blog.csdn.net/lovejavaydj/article/details/6
  2. Ubuntu Server中安装keepalived
  3. c字符串函数实现(1)---strncpy
  4. windows下编译firefox
  5. [RabbitMQ]整合SpringBoot
  6. 鸿星尔克向河南博物院捐款100万元用于灾后重建
  7. 服务器宝塔怎么开启php5.4伪静态,WeCenter在宝塔面板LNMP环境下开启伪静态方法
  8. 若有下列共用体定义_练习题-第十章 结构体与共用体(有答案)
  9. hypermesh optistruct 形状优化
  10. android获取屏幕像素密度DPI,与density
  11. 基于Android的五子棋 开题报告,毕业论文 基于Android的五子棋设计.doc
  12. 史上最全数据库笔记(上)
  13. 内网搭建speedtest测速工具
  14. python java通过socket交互数据 等到python服务端停止程序才能在java客户端看到数据的问题
  15. nginx的作用与原理
  16. 工作中的纠结——区分于底层OR界面
  17. python可以这样学读书笔记_Python 编程:从入门到实战 读书笔记
  18. 外卖-美团众包的几个小技巧
  19. js获得form表单的值$('#form1').serializeObject()/serialize()/serializeArray对比及判断表单中是否有输入框未输入值
  20. 关于InSAR学习的一些思考

热门文章

  1. Dockerfile 入门看这篇就够了
  2. dbeaver数据库工具
  3. LeetCode简单题之判断字符串的两半是否相似
  4. LeetCode简单题之密钥格式化
  5. Intel发布FPGA
  6. CPU三级缓存技术解析
  7. Imagination 的神经网络加速器和 Visidon 的去噪算法被证明是完美的搭档
  8. 基于Jittor框架实现LSGAN图像生成对抗网络
  9. 服务器技术综述(二)
  10. NVIDIA TensorRT:可编程推理加速器