Flink
文章平均质量分 90
Flink
长河0
Java开发工程师,现居杭州,CSDN博客专家,热衷于分享计算机编程相关知识,欢迎关注~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于Flink MySQL CDC技术实现交易告警
CDC 的全称是 Change Data Capture,是一种用于捕获数据库变更数据的技术。例如 MySQL 对数据的所有变更都会写入到 binlog,CDC 就可以通过监听 binlog 文件来实现对 MySQL 数据变更的捕获,然后做进一步的处理。Flink CDC 将CDC技术和 Flink 流计算整合到一起,把CDC捕获到的数据变更作为 Flink数据源,以实现对数据变更的流式处理。原创 2024-10-15 16:45:58 · 1814 阅读 · 1 评论 -
Flink状态一致性保证
一个Flink作业由一系列算子构成,每个算子可以有多个并行实例,这些实例被称为 subTask,每个subTask运行在不同的进程或物理机上,以实现作业的并行处理。在这个复杂的分布式场景中,任何一个节点故障都有可能导致 Flink 作业宕机,Flink 状态本地化虽然可以实现极致的访问速度,但是节点故障后的状态恢复问题也是Flink必须要解决的。原创 2024-10-15 16:45:12 · 1595 阅读 · 0 评论 -
Flink算子状态为何只能用ListState?
Flink 将状态是否要按照 key 进行分类,将状态分为键值状态(Keyed State)和算子状态(Operator State)两种,两者除了状态本身的作用域不同外,其中算子状态的状态类型更是被 Flink 限制为 ListState,这是为什么呢?原创 2024-10-15 16:44:33 · 1595 阅读 · 0 评论 -
Flink有状态计算
状态是什么?状态就是数据,准确点说,状态是指 Flink 作业计算时依赖的历史数据或中间数据。如果一个 Flink 作业计算依赖状态,那它就是有状态计算的作业,反之就是无状态计算的作业。举个例子,服务端应用为了方便扩缩容,一般会设计成无状态的,但是对外服务的接口又是有状态的,这是因为服务端应用本身不存储数据,数据存储在关系型或非关系型数据库中,此时的“状态”就从服务端迁移到数据库中了。Flink 同理,一个稍微复杂一点的作业,基本都会使用到状态。原创 2024-10-15 16:44:01 · 1554 阅读 · 0 评论 -
Flink双流时间窗口联接
Flink 除了可以在一条数据流上使用各种时间窗口算法来处理数据,还支持两条数据流上的一段时间窗口内的数据进行联接操作,类似于SQL中的 join 操作。原创 2024-10-15 16:43:27 · 1225 阅读 · 0 评论 -
Flink移除器Evictor
实现接口即可自定义 Evictor,泛型要注意,第一个是元素类型,第二个是窗口类型。举个例子,我们定义一个 Evictor,它在 ProcessFunction 计算前把窗口内所有的奇数全部移除掉,只保留偶数。@Override= 0) {@Override编写一个简单的 Flink 作业验证一下我们自定义的 Evictor,数据源手动指定为数字1到6,统一分配到 GlobalWindow 窗口,Trigger 元素等于6个就出发计算,最终输出窗口内的元素@Override});原创 2024-10-15 16:42:44 · 1047 阅读 · 0 评论 -
Flink触发器Trigger
通过子类继承 Trigger 重写相应的方法,即可自定义我们自己的触发器。举个例子,我们自定义一个和时间不相关的 Trigger,我们等窗口积攒到一定数量的元素再出发计算。@Override// 通过Flink state来保存窗口内积攒的元素数量@Override@Override@Override接下来验证一下我们的Trigger是否生效。原创 2024-10-15 16:41:33 · 1594 阅读 · 0 评论 -
Flink窗口分配器WindowAssigner
窗口对象被 Flink 统一封装为抽象类TimeWindow 基于时间范围的窗口,包含开始时间戳和结束时间戳GlobalWindow 全局窗口,与时间无关的窗口如果内置的这两种窗口无法满足你的需求,你也可以自定义窗口。需要注意的是,窗口本身是要在算子间传输的,所以你在自定义窗口的同时,还必须提供一个窗口序列化器,以便于 Flink 可以将你的窗口对象序列化传输。如下示例,我们定义了一个基于数字范围的 NumberWindow,可以将一个数字划分到对应的数字范围窗口内。return min;原创 2024-10-15 16:41:02 · 1417 阅读 · 0 评论 -
Flink时间窗口程序骨架结构
Flink 作业的基本骨架结构包含三部分:创建执行环境、定义数据处理逻辑、提交并执行Flink作业。日常大部分 Flink 作业是基于时间窗口计算模型的,同样的,开发一个Flink时间窗口作业也有一套基本的骨架结构,了解这套结构有助于我们更快地上手时间窗口作业开发。原创 2024-10-15 16:40:32 · 1813 阅读 · 0 评论 -
Flink事件时间和Watermark
内置 WatermarkGenerator 不满足需求时,也可以自定义Watermark生成策略。如果数据本身携带 Watermark 标志,那么可以重写 onEvent() 来发送 Watermark。@Override// 假设数据格式中 字符串W开头是Watermark,其中f1是时间戳@Override// NOOP如果数据本身没有Watermark标志,我们也可以直接根据系统时钟,周期性的发送 Watermark。原创 2024-10-15 16:39:59 · 1685 阅读 · 0 评论 -
Flink时间语义和时间窗口
在实际的流计算业务场景中,我们会发现,数据和数据的计算往往都和时间具有相关性。归纳总结可以发现,这些和时间相关的数据计算可以统一用一个计算模型来描述:每隔一段时间,计算过去一段时间内的数据,并输出结果。这个计算模型,就是时间窗口。原创 2024-10-15 16:39:19 · 2146 阅读 · 0 评论 -
Flink作业骨架结构
Flink是大数据流计算引擎,本质上是对大数据的计算处理,那么首先要解决的问题是:数据从哪儿来?解决这个问题,就是给Flink作业定义数据源,数据源被抽象成了 SourceFunction 接口,实现该接口重写 run 方法即可接收数据。有了数据,接下来就是声明要对这些数据做哪些处理?对数据的处理被抽象成了 ProcessFunction 接口,实现该接口重写 processElement 方法即可处理一条条数据。常见的数据处理操作有:过滤、转换、聚合等。原创 2024-10-15 16:38:35 · 1516 阅读 · 0 评论 -
初识Flink
伴随现代信息技术的持续发展,我们能清晰地察觉到,信息生产的规模不断扩张,信息更新的速率持续攀升。以电商系统为例,用户从搜索商品到下单支付,整个链路可能短短几秒就可以完成,倘若能在这条链路里更迅速地分析与挖掘出价值更高的信息,便能取得优势地位。在这种需求推动的宏大背景下,各类批处理、流处理引擎得以快速发展,其中 Apache Flink 更是成为后来居上的佼佼者。原创 2024-10-15 16:37:50 · 1005 阅读 · 0 评论
分享