f基础知识点3----window窗口函数与时间语义watermark

Window窗口

streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集, 而 window 是一种切割无限数据为有限块进行处理的手段。

无限切割为有限流的方式,将流数据分发到有限大小的桶中进行分析。

在这里插入图片描述

窗口的类型

CountWindow

按照指定的数据条数生成一个 Window, 与时间无关。

TimeWindow

按照时间生成 Window。
对于 TimeWindow,可以根据(窗口实现原理的不同)数据分发到桶的规则不同分成三类:滚动窗口( Tumbling Window)、滑动窗口( Sliding Window) 和会话窗口( Session Window)

滚动窗口(Tumbling Windows)

数据只属于一个窗口。

滑动窗口(Sliding Windows)

数据不只是属于一个窗口,属于多个窗口。

会话窗口(Session Windows)

Window API

窗口分配器 – window() 方法,需要注意的是,KeyedStream里面才有window()方法,因此window()方法的使用,必须在keyby之后,才能使用。

需要注意的是Time这个包,要引用对,streaming api 下面的。注意里面有windowing。

import org.apache.flink.streaming.api.windowing.time.Time

在这里插入图片描述

TimeWindow

滚动窗口(Tumbling Windows)
   val resultStream = dataStream
      .map(data =>(data.id,data.tempreture)) //转换成二元组,求id分组的最小温度,显然时间戳不需要了。
      .keyBy(_._1) // 以id进行分组
      .timeWindow(Time.seconds(15))  //15s的窗口大小,不滑动,也就是滚动。
      //后面可以继续跟着聚合的方法。
滑动窗口(Sliding Windows)

   val resultStream = dataStream
      .map(data =>(data.id,data.tempreture)) //转换成二元组,求id分组的最小温度,显然时间戳不需要了。
      .keyBy(_._1) // 以id进行分组
      .timeWindow(Time.seconds(15), Time.seconds(5)) //15s的窗口大小,滚动5s。
    //后面可以继续跟着聚合的方法。
会话窗口(Session Windows)

会话窗口的话,只能这么写。没有timewindow(),这种简写的方式。

在这里插入图片描述

CountWindow

滚动窗口(Tumbling Windows)
 val resultStream = dataStream
      .map(data =>(data.id,data.tempreture)) //转换成二元组,求id分组的最小温度,显然时间戳不需要了。
      .keyBy(_._1) // 以id进行分组
      .countWindow(10)
      //后面可以继续跟着聚合的方法。
滑动窗口(Sliding Windows)
  val resultStream = dataStream
      .map(data 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值