![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
flink
shenjianyu_rex
这个作者很懒,什么都没留下…
展开
-
Flink Joining
前言数据流操作的一个常见需求是对两条数据流中的事件进行联结(connect)或Join。connect在前面Flink API文章中。Flink DataStream API中内置有两个可以根据时间条件对数据流进行Join的算子:Window Join和Interval Join。如果Flink内置的Join算子无法表达所需的Join语义,那么你可以通过CoProcessFunction、BroadcastProcessFunction或KeyedBroadcastProcessFunction实现原创 2020-09-08 14:06:18 · 178 阅读 · 0 评论 -
Flink Window Triggers 触发器 和 EVICTORS 清理器
前言触发器定义了window何时会被求值以及何时发送求值结果。触发器可以到了特定的时间触发也可以碰到特定的事件触发。例如:观察到事件数量符合一定条件或者观察到了特定的事件。清理器是一个可选的组件,可以被注入到ProcessWindowFunction之前或者之后调用。evictor可以清除掉window中收集的元素。由于evictor需要迭代所有的元素,所以evictor只能使用在没有增量聚合函数作为参数的情况下。如果对window 的概念或者window的分配器不熟悉的话,可以看下前面的文章Flin原创 2020-09-07 18:04:11 · 961 阅读 · 0 评论 -
Flink 迟到元素的处理
前言前面文章Flink中的时间语义 和WaterMark有详细介绍过Flink WaterMark。WaterMark的出现是用来解决乱序时间的处理也就是处理迟到元素的。WaterMark可以用来平衡计算的完整性和延迟两方面。除非我们选择一种非常保守的水位线策略(最大延时设置的非常大,以至于包含了所有的元素,但结果是非常大的延迟),否则我们总需要处理迟到的元素。迟到的元素是指当这个元素来到时,这个元素所对应的窗口已经计算完毕了(也就是说水位线已经没过窗口结束时间了)。这说明迟到这个特性只针对事件时间。原创 2020-09-07 18:03:39 · 216 阅读 · 1 评论 -
Flink中的时间语义 和WaterMark
1. Flink 时间语义Flink定义了三类时间处理时间(Process Time)数据进入Flink被处理的系统时间(Operator处理数据的系统时间)事件时间(Event Time)数据在数据源产生的时间,一般由事件中的时间戳描述,比如用户日志中的TimeStamp摄取时间(Ingestion Time)数据进入Flink的时间,记录被Source节点观察到的系统时间在Flink中默认使用的是Process Time,绝大部分的业务都会使用eventTime,一般只在eventTim原创 2020-09-07 18:03:02 · 619 阅读 · 0 评论 -
Flink Window
1.window 概述streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集Window窗口就在一个无界流中设置起始位置和终止位置,让无界流变成有界流,并且在有界流中进行数据处理Window操作常见的业务场景:统计过去一段时间、最近一些元素的数据指标2.window 窗口的类型2.1 根据数据流是否keyBy划分 Keyed vs Non-Keyed Windows要指定是否是 Keyed windows 需要在wind原创 2020-09-07 18:01:37 · 197 阅读 · 0 评论 -
Flink Process Function
前言转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API提供了一系列的Low-Level转换算子。可以访问时间戳、watermark以及注册定时事件。还可以输出特定的一些事件,例如超时事件等。Process Function用来构建事件驱动的应用以及实现自定义的业务逻辑(使用之前的window函数和转换算子无法实现)。例如,Flink SQL就是使用Pr原创 2020-09-07 17:58:59 · 352 阅读 · 0 评论 -
flink kafka connector
1.kafka connector版本选取Flink有多个Kafka connector:universal,0.10和0.11。 Flink 1.7 开始就有这个universal的Kafka connector通用版本,跟Kafka client端的尽量保持最新版本。这个版本的Kafka客户端向后兼容代理版本0.10.0或更高版本。对于大多数用户而言,universal的Kafka连接器是最合适的。对于Kafka版本0.11.x和0.10.x,我们建议分别使用专用的0.11和0.10连接器。转载 2020-09-07 17:58:06 · 560 阅读 · 0 评论 -
Flink API
1.Flink API介绍Flink提供了不同的抽象级别以开发流式或者批处理应用程序Stateful Stream Processing 最低级的抽象接口是状态化的数据流接口(statefulstreaming)。这个接口是通过 ProcessFunction 集成到 DataStream API 中的。该接口允许用户自由的处理来自一个或多个流中的事件,并使用一致的容错状态。另外,用户也可以通过注册event time 和 processing time 处理回调函数的方法来实现复杂的计算D原创 2020-09-07 17:57:24 · 319 阅读 · 0 评论 -
Flink 架构
1.Flink 运行时的角色Flink系统架构中包含了两个角色,分别是JobManager和TaskManager,是一个典型的Master-Slave架构。JobManager相当于是Master,TaskManager相当于是Slave。Clinet 负责将当前的任务提交给JobManager,提交任务的常用方式:命令提交、web页面提交。当Client提交任务之后,客户端可以断开连接(detached mode),也可以保持连接状态来接收任务的报告(attached mode)。JobMana原创 2020-09-07 17:55:34 · 124 阅读 · 0 评论