Flink window 用法介绍(1)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Flink window 用法介绍(1)

Sink


Flink没有类似spark中foreach方法 让用户进行迭代操作
虽有对外的输出操作 都要利用Sink完成 
最后通过类似如下方式完成整个任务最终输出操作


stream.addSink(new MySink(xxxx))


官方提供了一部分框架的Sink 除此之外 需要用户自定义实现sink



image.png


image.png


  • 既然从kafka sensor主题中消费消息 所以需要有一个往该队列中发送消息的生产者


./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic sensor


  • 往sinkTest主题中生产消息 所以需要有一个监听该主题的消费者


./bin/kafka-console-consumer.sh --bootstrap-sever localhost:9092 --topic sinkTest


具体演示过程在这里面有详细说明Flink原理简介和使用


Redis Sink


  • 源码


https://gitee.com/pingfanrenbiji/Flink-UserBehaviorAnalysis/blob/master/FlinkTutorial/src/main/scala/com/xdl/apitest/sinktest/RedisSinkTest.scala


  • 源码分析


image.png


image.png


  • set和hset比较


set :
1、普通的key-value方式存储数据 
2、可以设置过期时间
3、时间复杂度为O(1)
4、每执行一个set 在redis中就会多一个key
hset:
1、以hash散列表的形式存储
2、超时时间只能设置在大key上
3、单个filed则不能设置超时时间
4、时间复杂度是O(N) N是单个hash上filed的个数
5、hash上不适合存储大量的filed 多了比较消耗cpu
6、但以散列表存储比较节省内存
使用场景总结:
1、在实际的使用过程中 使用set应该保存单个大文本非结构化数据
2、hset则存储结构化数据 一个hash存储一条数据 一个filed存储一条数据中的一个属性 value则是属性对应的值
举例说明:
用户表
id,name,age,sex
1、1,张三,16,1
2、2,李四,22,1
3、3,王五,28,0
4、4,赵六,32,1
如果要整表缓存到 redis 中则使用 hash ,一条数据一个hash 一个hash 里则包含4个filed。
hset user_1 id 1 name 张三 age 16 sex 1
hset user_2 id 2 name 李四 age 16 sex 1
如果用户的某个属性值改变,还可以单个修改
把张三的年龄改为30 则可以使用命令 hset user_1 age 30


image.png


set存储举例:
1、缓存应用整个首页 html 
2、某个商品的详情介绍
  a、一般来说商品的详情介绍是makdown语法的富文本信息
  b、html 格式的富文本信息
3、应用中的 某个热点数据
相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
5月前
|
数据安全/隐私保护 流计算
Flink的Interval Join是基于水印(Watermark)和时间窗口(Time Window)实现的
Flink的Interval Join是基于水印(Watermark)和时间窗口(Time Window)实现的
103 2
|
9月前
|
Java 流计算
Flink broadcast的用法
Flink broadcast的用法
81 0
|
SQL Java Maven
【Flink】小白级入门,Flink sql 的基础用法(下)
【Flink】小白级入门,Flink sql 的基础用法
299 0
|
SQL Java 大数据
【Flink】小白级入门,Flink sql 的基础用法(上)
【Flink】小白级入门,Flink sql 的基础用法
389 0
|
BI API 数据处理
带你理解并使用flink中的Time、Window(窗口)、Windows Function(窗口函数)
flink中,streaming流式计算被设计为用于处理无限数据集的数据处理引擎,其中无限数据集是指一种源源不断有数据过来的数据集,window (窗口)将无界数据流切割成为有界数据流进行处理的方式。实现方式是将流分发到有限大小的桶(bucket)中进行分析。flink 中的streaming定义了多种流式处理的时间,Event Time(事件时间)、Ingestion Time(接收时间)、Processing Time(处理时间)。
536 0
带你理解并使用flink中的Time、Window(窗口)、Windows Function(窗口函数)
|
存储 Java Apache
Flink Window 、Time(二)| 学习笔记
快速学习 Flink Window 、Time 。
124 0
|
BI API 数据处理
【Flink】(四)详解 Flink 中的窗口(Window)
【Flink】(四)详解 Flink 中的窗口(Window)
752 0
【Flink】(四)详解 Flink 中的窗口(Window)
|
API 流计算 Windows
关于Flink框架窗口(window)函数最全解析
在真实的场景中数据流往往都是没有界限的,无休止的,就像是一个通道中水流持续不断地通过管道流向别处,这样显然是无法进行处理、计算的,那如何可以将没有界限的数据进行处理呢?我们可以将这些无界限的数据流进行切割、拆分,将其得到一个有界限的数据集合然后进行处理、计算就方便多了。Flink中窗口(Window)就是来处理无界限的数据流的,将无线的数据流切割成为有限流,然后将切割后的有限流数据分发到指定有限大小的桶中进行分析计算。
关于Flink框架窗口(window)函数最全解析
|
存储 缓存 数据处理
|
存储 分布式计算 测试技术
彻底搞清Flink中的Window
在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。
442 0
彻底搞清Flink中的Window