flink笔记9[实验]体验窗口开启时间和关闭时间(eventtime)(代码片段)

Aurora1217 Aurora1217     2022-12-05     148

关键词:

体验窗口开启时间和关闭时间

 

实验数据

实验代码

实验结果

实验分析

窗口开始时间公式


实验数据

sensor_1,1619492107,36.2
sensor_1,1619492108,36.0
sensor_1,1619492109,36.5
sensor_1,1619492110,34.3
sensor_1,1619492111,34.3
sensor_1,1619492112,34.3
sensor_1,1619492113,34.3
sensor_1,1619492114,34.3
sensor_1,1619492115,34.3
sensor_1,1619492116,34.3
sensor_1,1619492117,34.3
sensor_1,1619492118,34.3
sensor_1,1619492119,34.3
sensor_1,1619492120,36.2
sensor_1,1619492121,36.1
sensor_1,1619492122,36.5
sensor_1,1619492123,35.2
sensor_1,1619492124,36.2
sensor_1,1619492125,36.1
sensor_1,1619492126,36.5
sensor_1,1619492127,36.2
sensor_1,1619492128,36.1
sensor_1,1619492129,36.3
sensor_1,1619492130,36.2
sensor_1,1619492131,36.2
sensor_1,1619492132,36.2
sensor_1,1619492170,36.2
sensor_1,1619492171,36.5
sensor_1,1619492172,37.3
sensor_1,1619492173,36.2
sensor_1,1619492174,36.3
sensor_1,1619492175,36.1
sensor_1,1619492176,36.6
sensor_1,1619492177,36.5
sensor_1,1619492178,36.1
sensor_1,1619492179,36.8
sensor_1,1619492180,36.1
sensor_1,1619492209,36.5

实验代码

import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment, createTypeInformation
import org.apache.flink.streaming.api.windowing.time.Time

case class sensorReading(id:String,timestamp:Long,temperature:Double)

object window_eventtime 
  def main(args: Array[String]): Unit = 
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1)
    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

    val inputStream = env.socketTextStream("localhost",7777)

    val resultStream = inputStream
      .map(data =>
        val arr = data.split(",")
        sensorReading(arr(0),arr(1).toLong,arr(2).toDouble)
      )
      .assignAscendingTimestamps(_.timestamp * 1000)
      .assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor[sensorReading](Time.seconds(3)) 
        override def extractTimestamp(element: sensorReading): Long = element.timestamp * 1000L
       )
      .keyBy(_.id)
      .timeWindow(Time.seconds(15))
      .reduce((data1,data2)=>sensorReading(data1.id,data2.timestamp,data1.temperature.min(data2.temperature)))

    resultStream.print()

    env.execute("window_eventtime test")
  

实验结果

实验分析

窗口开始时间 = TimeStamp - (TimeStamp - offset + windowSize) % windowSize

第一个窗口的开始时间:1619492107 - (1619492107 - 0 + 15) % 15 = 1619492100
第一个窗口就是 [1619492100 , 1619492115)
由实验结果(第一个窗口中最新的时间戳为1619492114)可知:正好在结束时间产生的数据1619492115不在第一个窗口里

窗口开始时间公式

可以在底层源码中找到

 

flink笔记10[实验]体验processingtime和指定eventtime下的区别(代码片段)

体验ProcessingTime和指定EventTime下的区别 实验数据实验代码实验结果实验分析实验数据sensor_1,1619492107,36.2sensor_1,1619492108,36.0sensor_1,1619492109,36.5sensor_1,1619492110,34.3sensor_1,1619492111,34.3sensor_1,1619492112,34.3sensor_1,1619492113,34.3sensor_1,1619492114,... 查看详情

学习笔记flink——flink数据流模型时间窗口和核心概念

一、Flink编程数据流模型1.1、Flink–API封装Flink提供不同级别的API封装来支持流/批处理应用程序。1.2、Flink-编程数据流Source:一个不会结束的数据记录流。Transformations:使用一个或多个数据流作为输入,生成一个或多... 查看详情

学习笔记flink——flink数据流模型时间窗口和核心概念

一、Flink编程数据流模型1.1、Flink–API封装Flink提供不同级别的API封装来支持流/批处理应用程序。1.2、Flink-编程数据流Source:一个不会结束的数据记录流。Transformations:使用一个或多个数据流作为输入,生成一个或多... 查看详情

12-flink-1.10.1-flink中的时间语义和watermark(代码片段)

...(EventTime)。如果我们想统计的是每部电影观后体验和口碑的话就要关注电影上 查看详情

flink中的时间和窗口(代码片段)

借鉴《尚硅谷Flink1.13版本笔记.pdf》中第六章Flink中的时间和窗口在流数据处理应用中,一个很重要的操作就是窗口计算。所谓的“窗口”,就是划定的一段时间范围,也就是“时间窗”;对这范围内数据进行处理&... 查看详情

flink学习(十四)flink窗口时间和水位线(代码片段)

...个问题,这个特别的机制就是“水位线”。Flink的窗口和时间根据窗口数据划分的不同,目前Flink支持如下3种:滚动窗口,窗口数据有固定的大小,窗口中的数据不会叠加;滑动窗口,窗口数据有固定的大小,并且有生成... 查看详情

flink笔记15flinktable表的时间属性(代码片段)

表的时间属性 1.时间属性介绍2.处理时间(ProcessingTime)在创建表的DDL中定义在DataStream到Table转换时定义使用TableSource定义3.事件时间(ProcessingTime)在DataStream转换成Table时定义在创建表的DDL中定义使用TableSource定义1.时间属性介绍像窗... 查看详情

11.flink四大基石window窗口的分类flink提供了很多各种场景用的windowassigner基于时间的滚动和滑动基于时间的滚动和滑动窗口基于数量的滚动和滑动(代码片段)

本文来自:Flink1.12-2021黑马程序员贺岁视频的学习笔记11.Flink四大基石12.Window12.1.窗口的分类12.2.API12.2.1.window和windowAll12.2.2.API调用示例12.2.3.Flink提供了很多各种场景用的WindowAssigner12.3.代码演示–基于时间的滚动和滑动–掌握12... 查看详情

flink笔记16flinktablewindows(groupwindows/overwindows)(代码片段)

目录1.介绍2.GroupWindows(分组窗口)tumblingwindow(滚动窗口)SlidingWindows(滑动窗口)SessionWindows(会话窗口)实例3.OverWindows无界的OverWindows有界的OverWindows实例4.SQL中的GroupWindows和OverWindowsGroupWindowsOverWindows1.介绍时间语义,要配合窗口操作... 查看详情

flink笔记16flinktablewindows(groupwindows/overwindows)(代码片段)

目录1.介绍2.GroupWindows(分组窗口)tumblingwindow(滚动窗口)SlidingWindows(滑动窗口)SessionWindows(会话窗口)实例3.OverWindows无界的OverWindows有界的OverWindows实例4.SQL中的GroupWindows和OverWindowsGroupWindowsOverWindows1.介绍时间语义,要配合窗口操作... 查看详情

flink中的时间和窗口(代码片段)

...间语义更重要6.2水位线(Watermark)6.2.1事件时间和窗口6.2.2什么是水位线6.2.3如何生成水位线6.2.4水位线的传递 6.2.5水位线的总结6.1时间语义6.1.1Flink中的时间语义Flink是一个分布式处理系统。分布式架构最大的特点,就... 查看详情

flink窗口和水位线(代码片段)

什么是窗口我认为的窗口是无限处理流的一个核心,因为stream是流数据,而batch是批数据,window也是stream通往batch的一个转折,因为通过窗口可以实现批流一体什么是水位线个人理解:水位线是处理乱序数据或迟到数据的... 查看详情

《从0到1学习flink》——flink中几种time详解(代码片段)

...程序在ProcessingTime上运行时,所有基于时间的操作(如时间窗口)将使用当时机器的系统时间。每小时ProcessingTime窗口将包括在系统时钟指示整个小时之间到达特定操作的所有事件。例如,如果应用程序在上午9:15开始运行,则第一... 查看详情

flink学习笔记窗口详解(代码片段)

一、概述:        Flink中Batch是Streaming的一个特例,因此Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而Window就是从Streaming到Batch的桥梁。二、flink窗口类型:Flink提供了丰富的窗口类型,... 查看详情

flink原理学习窗口和时间(代码片段)

Flink原理学习之窗口和时间文章目录Flink原理学习之窗口和时间一、Flink的时间类型二、Watermark三、Flink窗口机制Java、大数据开发学习要点(持续更新中…)一、Flink的时间类型Flink的时间语义分为三种:EventTime:即... 查看详情

flink原理学习窗口和时间(代码片段)

Flink原理学习之窗口和时间文章目录Flink原理学习之窗口和时间一、Flink的时间类型二、Watermark三、Flink窗口机制Java、大数据开发学习要点(持续更新中…)一、Flink的时间类型Flink的时间语义分为三种:EventTime:即... 查看详情

Apache Flink 两种类型的窗口,时间和“计数”窗口

】ApacheFlink两种类型的窗口,时间和“计数”窗口【英文标题】:ApacheFlinktwotypesofwindow,timeand"count"windows【发布时间】:2018-06-2315:27:49【问题描述】:我正在尝试将文件作为带有窗口的流来处理。这里是代码objectProgdefmain(ar... 查看详情

flink的窗口机制与流处理join的方案

...的数据聚合之后,再一起处理的形式,此时需要定义一个窗口来收集过去那段时间内的数据再进行处理。Flink提出了三种时间的概念,分别是eventtime(事件时间:事件发生时的时间),ingestiontime(摄取时间:事件进入流处理系统... 查看详情