Flink
文章平均质量分 94
流处理框架 Flink学习、分享
ZLin.Tang
我们在借来的时间中生活,终其一生去寻找那个答案。
展开
-
《Flink学习笔记》——第十二章 Flink CEP
这个接口需要实现一个 processTimedOutMatch()方法,可以将超时的、已检测到的部分匹配事件放在一个 Map 中,作为方法的第一个参数;它们构成了一个新的“复杂事件流”,流中的数据就变成了一组一组的复杂事件,每个数据都包含了一个圆形和一个三角形。具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;在循环模式中,对同样特征的事件可以匹配多次。比如我们定义个体模式为“匹配形状为三角形的事件”,再让它循环多次,就变成了“匹配连续多个三角形的事件”。原创 2023-08-31 18:30:14 · 1050 阅读 · 0 评论 -
《Flink学习笔记》——第十一章 Flink Table API和 Flink SQL
Table API和SQL是最上层的API,在Flink中这两种API被集成在一起,SQL执行的对象也是Flink中的表(Table),所以我们一般会认为它们是一体的。Flink是批流统一的处理框架,无论是批处理(DataSet API)还是流处理(DataStream API),在上层应用中都可以直接使用Table API或者SQL来实现;这两种API对于一张表执行相同的查询操作,得到的结果是完全一样的。需要说明的是,Table API和SQL最初并不完善,在Flink 1.9版本合并阿里巴巴内部版原创 2023-08-31 18:27:18 · 1124 阅读 · 0 评论 -
《Flink学习笔记》——第十章 容错机制
既然是端到端的exactly-once,我们依然可以从三个组件的角度来进行分析:(1)Flink内部Flink内部可以通过检查点机制保证状态和处理结果的exactly-once语义。(2)输入端输入数据源端的Kafka可以对数据进行持久化保存,并可以重置偏移量(offset)。所以我们可以在Source任务(FlinkKafkaConsumer)中将当前读取的偏移量保存为算子状态,写入到检查点中;原创 2023-08-30 10:27:33 · 889 阅读 · 0 评论 -
《Flink学习笔记》——第九章 多流转换
无论是基本的简单转换和聚合,还是基于窗口的计算,我们都是针对一条流上的数据进行处理的。而在实际应用中,可能需要将不同来源的数据连接合并在一起处理,也有可能需要将一条流拆分开,所以经常会有对多条流进行处理的场景。原创 2023-08-28 22:56:46 · 1468 阅读 · 0 评论 -
《Flink学习笔记》——第八章 状态管理
在Flink中,算子任务可以分为无状态和有状态两种情况。**无状态的算子:**每个事件不依赖其它数据,自己处理完就输出,也不需要依赖中间结果。例如:打印操作,每个数据只需要它本身就可以完成。**有状态的算子:**事件需要依赖中间或者外其它数据才能完成计算。比如计算累加和,我们需要记录当前的和是多少,等下一个数据来的时候我们直接将当前和加上该数更新当前累加和。所以我们需要保存当前和。而这里的中间结果和其它数据就是“状态”。原创 2023-08-28 22:29:16 · 1179 阅读 · 0 评论 -
《Flink学习笔记》——第七章 处理函数
为了让代码有更强大的表现力和易用性,Flink 本身提供了多层 API在更底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。是整个DataStream API的基础。原创 2023-08-28 22:27:58 · 1171 阅读 · 0 评论 -
《Flink学习笔记》——第六章 Flink的时间和窗口
只通过事件时间来判断是否一个窗口的数据已经到齐是不行的。我们可以基于事件时间去自定义一个时钟,用来表示当前时间的进展。例如:我们定义一个时钟,这个时钟的时间逻辑是比事件时间晚5分钟。当一个数据过来,它的事件时间是9:00:00,这时窗口会认为是8:55:00。这时,窗口认为还没有到9点,所以8——9点的窗口统计还不到时间。会再等等,等收到大于或等于9:05:00的数据时才会进行统计。这样如果有事件时间为8:58:00的数据在9:04:00才到来时,也能够被统计到8——9点的窗口中。原创 2023-08-28 22:26:04 · 1288 阅读 · 0 评论 -
《Flink学习笔记》——第五章 DataStream API
如果遇到特殊情况, 我们想要读取的数据源来自某个外部系统,而 flink 既没有预实现的方法、也没有提供连接器, 又该怎么办呢?那就只好自定义实现 SourceFunction 了。接下来我们创建一个自定义的数据源,实现 SourceFunction 接口。主要重写两个关键方法:run()和 cancel()。run()方法:使用运行时上下文对象(SourceContext)向下游发送数据;cancel()方法:通过标识位控制退出循环,来达到中断数据源的效果。自定义一个数据源ClickSource。原创 2023-08-26 23:25:31 · 522 阅读 · 0 评论 -
《Flink学习笔记》——第四章 Flink运行时架构
flink原创 2023-08-26 22:02:54 · 500 阅读 · 0 评论 -
《Flink学习笔记》——第三章 Flink的部署模式
flink原创 2023-08-26 21:59:56 · 1399 阅读 · 0 评论 -
《Flink学习笔记》——第二章 Flink的安装和启动、以及应用开发和提交
Flink原创 2023-08-26 21:56:24 · 2249 阅读 · 0 评论 -
《Flink学习笔记》——第一章 概念及背景
什么是批处理和流处理,然后由传统数据处理架构为背景引出什么是有状态的流处理,为什么需要流处理,而什么又是有状态的流处理。进而再讲解流处理的发展和演变。而Flink作为新一代的流处理器,它有什么优势?它的相关背景及概念和特性又是什么?有哪些应用场景?原创 2023-08-26 21:44:31 · 821 阅读 · 0 评论 -
Flink CDC学习笔记
CDC (Change Data Capture 变更数据获取)的简称。核心思想就是,检测并获取数据库的变动(增删查改),将这些变更按发生的顺序记录下来,写入到消息中间件以供其它服务进行订阅及消费。自定义序列化器 CustomDeserializationSchemaimport com/**// before数据 result . put("before" , getData("before" , value));原创 2023-08-26 17:53:57 · 1343 阅读 · 0 评论