首页 > 编程语言 >flink中的setStreamTimeCharacteristic 指定为EventTime的source需要自己定义event time以及emit watermark,或者在source之外通过

flink中的setStreamTimeCharacteristic 指定为EventTime的source需要自己定义event time以及emit watermark,或者在source之外通过

时间:2023-12-28 19:34:04浏览次数:32  
标签:EventTime flink 指定 source 时间 事件 Time

flink中的setStreamTimeCharacteristic

TimeCharacteristic

 

 

   env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

 

此处可以取以下三类值:

Event Time

事件时间,事件(Event)本身的时间,即数据流中事件实际发生的时间,通常使用事件发生时的时间戳来描述,这些事件的时间戳通常在进入流处理应用之前就已经存在了,事件时间反映了事件真实的发生时间。所以,基于事件时间的计算操作,其结果是具有确定性的,无论数据流的处理速度如何、事件到达算子的顺序是否会乱,最终生成的结果都是一样的。

Ingestion Time

摄入时间,事件进入Flink的时间,即将每一个事件在数据源算子的处理时间作为事件时间的时间戳,并自动生成水位线(watermarks,关于watermarks下文会详细分析)。

Ingestion Time从概念上讲介于Event Time和Processing Time之间。与Processing Time相比 ,它的性能消耗更多一些,但结果却更可预测。由于 Ingestion Time使用稳定的时间戳(在数据源处分配了一次),因此对记录的不同窗口操作将引用相同的时间戳,而在Processing Time中每个窗口算子都可以将记录分配给不同的窗口。

与Event Time相比,Ingestion Time无法处理任何乱序事件或迟到的数据,即无法提供确定的结果,但是程序不必指定如何生成水位线。在内部,Ingestion Time与Event Time非常相似,但是可以实现自动分配时间戳和自动生成水位线的功能。

Processing Time

处理时间,根据处理机器的系统时钟决定数据流当前的时间,即事件被处理时当前系统的时间。还以窗口算子为例(关于window,下文会详细分析),基于处理时间的窗口操作是以机器时间来进行触发的,由于数据到达窗口的速率不同,所以窗口算子中使用处理时间会导致不确定的结果。在使用处理时间时,无需等待水位线的到来后进行触发窗口,所以可以提供较低的延迟。

举一个实际的例子:

 

 

 

站在看电影的普通大众来说肯定是关心电影的上映时间;也就是处理时间 也就是processTime

站在研究电影剧情的人来说肯定关心的是电影整个系列的故事发展,应该先看1999的星球大战1....也就是eventTime。

另外再看一个例子:

 

 

 

eventTime 是追求数据准,接受一定的延迟

processTime是追求快,容忍数据存在一定的偏差

flink默认使用eventTime

flink中的setStreamTimeCharacteristic

  1. flink的TimeCharacteristic枚举定义了三类值,分别是ProcessingTime、IngestionTime、EventTime
  2. ProcessingTime是以operator处理的时间为准,它使用的是机器的系统时间来作为data stream的时间;IngestionTime是以数据进入flink streaming data flow的时间为准;EventTime是以数据自带的时间戳字段为准,应用程序需要指定如何从record中抽取时间戳字段
  3. 指定为EventTime的source需要自己定义event time以及emit watermark,或者在source之外通过assignTimestampsAndWatermarks在程序手工指定
原文链接:https://www.cnblogs.com/xingmeng63/p/16085200.html

标签:EventTime,flink,指定,source,时间,事件,Time
From: https://www.cnblogs.com/sunny3158/p/17933406.html

相关文章

  • SpringBoot+JaywayJsonPath实现Json数据的DSL(按照指定节点表达式解析json获取指定数
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:若依前后端分离版手把手教你本地搭建环境并运行项目_前后端分离项目本地运行在上面搭建SpringBoot项目的基础上,并且在项目中引入fastjson、hutool等所需依赖后。JaywayJsonPath:GitHub-json-path/JsonPath:JavaJsonPathi......
  • Python采集html页面时如何去除掉script,link等指定html标签
    python爬虫去除html中特定标签、去除注释、替换实体前言:本文主要讲w3lib库的四个函数html.remove_tags()html.remove_tags_with_content()html.remove_comments()html.remove_entities()remove_tags作用:去除或保留标签,但是仅仅是去除标签,正文部分是不做处理的 看其函数......
  • Linux设置防火墙,只允许特定IP访问指定端口
    一、概述1、目的服务器A使用端口1521,只有允许指定IP应用才可以访问,其它未经允许服务器ip地址无法正常访问。2、方法步骤启用防火墙。检查端口与关闭端口访问。添加设置特定ip访问特定端口。3、注意事项启用防火墙的时候,一定要注意,如果是远程访问的话,一定要先添加远程端口的......
  • 反转链表指定区间
    描述将一个节点数为size链表m位置到n位置之间的区间反转,要求时间复杂度O(n),空间复杂度O(1)。例如:给出的链表为1→2→3→4→5→NULL,m=2,n=4,返回1→4→3→2→5→NULL.数据范围:链表长度0<size≤1000,0<m≤n≤size,链表中每个节点的值满足要求:时间复杂度O(n),空间......
  • 如何利用搜索引擎指定网站(指定网址前缀)进行关键词搜索
    参考:site:搜索运算符博客园之前是有第三方搜索引擎(Google)的查询入口的,现在更新后就没有这个入口了,不过这也比较好理解,毕竟这个Google的查询入口好多人是用不了的,于是这里就给出手动指定查询网址的前缀来进行关键词查询了。例子:......
  • 【Flink从入门到精通 05】Source&Sink
    【Flink从入门到精通05】Source&SinkFlink用于处理有状态的流式计算,需要对Source端的数据进行加工处理,然后写入到Sink端,下图展示了在Flink中数据所经历的过程,今天就根据这张图分别给大家分享下。01EnvironmentFlink所有的程序都从这一步开始,只有创建了执行环境,才能开......
  • 【Python】Python安装指定版本库
    Python安装指定版本库安装指定的版本库在平时代码开发中是很有必要的操作,毕竟有些库之间相互依赖,如果版本不在依赖的范围之内,我们安装的库会报安装的依赖版本有问题。先看一下命令:pipinstall库名=版本号1示例:pipinstallnumpy==1.21.51如果你下载库的速度比较慢或者没办法下......
  • fastadmin隐藏指定表格行的按钮
    一、隐藏修改,删除按钮(隐藏所有行)隐藏前修改代码varController={index:function(){//初始化表格参数配置Table.api.init({extend:{index_url:'department/index/index',ad......
  • VS2019,无法启动程序xxx.exe,系统找不到指定的文件,重新生成解决方案报错
     调试程序报错如图一、尝试重新生成解决方案二、如果生成解决方案也报错,重新安装.netSDK本人所用为VS2019,.net5,到官网下载.net5的SDK重新安装后,恢复正常,重新生成成功,启动调试成功。.net各版本下载地址:https://dotnet.microsoft.com/en-us/download/dotnet.net5下载地址:h......
  • 在linux中查看运行指定进程资源占用(cpu+gpu)
    在运行程序时有时候会需要查看资源占用,以方便部署在其他服务器上时进行参考。以下是总结了我在linux上查找程序进程资源的两种方法(cpu和gpu都有)。CPU1.查找进程号如果进程较多,输入ps-ef|grep+指令关键词进行搜索。如果运行的是python程序,可以输入ps-ef|greppytho......