Flink
文章平均质量分 73
stable_阿甘
用心学习,用心做事
展开
-
Flink DataStream自定义实现IntervalLeftOuterJoin
因为Flink DataStream内置的Join操作,只有Inner Join,而对于Outer Join支持的比较少,Window Outer Join我们可以用cogroup来实现,而Interval Outer Join相对复杂,所以自己参考Flink IntervalJoinOperator实现了一个IntervalLeftOuterJoinFunction原创 2023-08-01 22:29:43 · 105 阅读 · 0 评论 -
17.Flink双流Join——SQL
本文介绍了基于flink sql的双流join原创 2023-08-27 21:11:39 · 204 阅读 · 0 评论 -
16.Flink Table——时态表
本文介绍了flink时态表原创 2023-08-27 21:10:59 · 77 阅读 · 0 评论 -
15.Flink Table——动态表
本文介绍了flink动态表原创 2023-08-27 21:09:54 · 109 阅读 · 0 评论 -
14.Flink双流Join——DataStream
本文介绍了基于flink datastream的双流join原创 2023-08-27 21:46:24 · 269 阅读 · 2 评论 -
13. 状态的底层存储——CopyOnWriteStateMap
不管是ValueState、ListState、MapState,它们的底层存储都是用的StateTable<K, N, S>,而StateTable的底层存储又是StateMap<K, N, S>的数组,每个StateMap代表一个keyGroup。在获取元素时,先根据key计算出来它所属的keyGroup,拿到对应的StateMap,再通过map.get(key)的方式获取到对应的元素。K:keyBy时用的keyN:namespace, 用于区分窗口。原创 2023-08-27 21:24:46 · 176 阅读 · 0 评论 -
12.状态阔缩容
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WemjYBAD-1690106129241)(https://raw.githubusercontent.com/MingRongXi/my-study-picture/master/%E7%9B%B4%E6%8E%A5%E7%94%A8hash%20key%E7%9A%84%E9%98%94%E7%BC%A9%E5%AE%B9.png)]CheckPoint在做快照时,会把算子的状态存储到分布式存储系统上,如HDFS。原创 2023-07-23 17:56:40 · 82 阅读 · 0 评论 -
9. ProcessFunction
一、ProcessFunction 是介绍 ProcessFunction 是一种低级别的算子,它可以访问所有流程序的基本组件,包括: 1. 流中的元素 2. 状态(仅在 keyed stream 中可用) 3. 计时器 ProcessFunction 可以认为是可以访问 keyed state 和计时器的 FlatMapFunction,它每接收一条数据处理一次。二、Timers 一个 (key, timestamp) 只会被分配一个计时器,在同一个 timestamp 分配了多原创 2021-04-12 01:10:21 · 90 阅读 · 0 评论 -
8. WindowAPI
Window编程模型Keyed Windowsstream .keyBy(...) <- keyed versus non-keyed windows .window(...) <- required: "assigner" [.trigger(...)] <- optional: "trigger" (else default trigger) [.e原创 2021-04-12 01:09:54 · 86 阅读 · 0 评论 -
7. Watermark
如上述案例:如果把Watermark的延迟调为 3,那么当 1 到达时,Watermark 为 -2,4到达时,Watermark 为 1(表示 1 以前的数据都到达了),5 到达时,Watermark 为 2(表示 2 以前的数据都到达了),知道 Event Time 为 8 的记录到达时,才表示 5 以前的数据都到达,关闭第一个窗口 [1, 5)。根据第一条定义,Wartermark 衡量 Event Time 的进展,即是可以起到 “调慢事件时间” 的作用,让程序误以为没有到达触发的事件。原创 2023-07-23 21:47:08 · 101 阅读 · 0 评论 -
6. CheckPoint
一、CheckPoint 是什么 Flink 实现容错的核心就是使用流重播和检查点。检查点就是在某个时间点所有任务的状态的一份快照,如果发生故障,Flink 将会使用最近的检查点来一致恢复应用程序的状态,并重新启动处理流程。二、实现 实现检查点的一种简单的思路是暂停应用,然后对当前流程的状态做快照,但是这样会极大的影响刘处理的性能。Flink 采用了基于 Chandy-Lamport 算法的分布式快照,将检查点的保存和数据处理分离开,不暂停整个应用。实现的方式就是使用 barrier。2.1原创 2021-04-12 01:04:18 · 133 阅读 · 0 评论 -
5. 状态
一、状态是什么由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态可以认为状态就是一个本地变量,可以被任务的业务逻辑访问Flink 会进行状态管理,包括状态一致性、故障处理以及高效存储和访问,以 便开发人员可以专注于应用程序的逻辑二、状态的两种类型**KeyedState:**根据数据流中定义的 key 来维护和访问,有如下的数据结构:ValueState<T>: 保存一个可以更新和检索的值(如上所述,每个值都对应到当前的输入数据的 key,因此算子接收到的每原创 2021-04-12 01:00:23 · 180 阅读 · 0 评论 -
4. 广播变量
一、分区规则(DataStream Broadcast)和广播变量(Flink Broadcast)1.1 DataStream Broadcast(分区规则) 分区规则是把元素广播给所有的分区,数据会被重复处理。DataStream.broadcast()1.2 Flink Broadcast(广播变量) 类似于Spark广播变量,广播的数据是Dataset,接收广播的也是Datasetimport org.apache.flink.api.common.functions.RichM原创 2021-04-12 00:59:44 · 274 阅读 · 0 评论 -
3. 自定义datasource
一、自定义DataSource 自定义DataSource有两大类:单线程的DataSource和多线程的DataSource单线程:继承 SourceFunction多线程:继承 ParallelSourceFunction,继承 RichParallelSourceFunction(可以有其他的很多操作)import org.apache.flink.configuration.Configurationimport org.apache.flink.streaming.api.fu原创 2021-04-12 00:59:13 · 446 阅读 · 0 评论 -
2. Flink运行时架构
Flink 架构一、Flink 集群剖析 Flink 运行时由两种类型的进程组成:一个 JobManager 和多个 TaskManager1.1 JobManager JobManager 具有许多与协调 Flink 应用程序的分布式执行有关的职责:它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调 checkpoing、并且协调从失败中恢复等。这个进程由三个不同的组件组成:ResourceManagerResourceManager 负原创 2021-04-12 00:58:08 · 135 阅读 · 0 评论 -
1. Flink简述
Flink与Spark Streaming对比数据模型和处理模型 Spark 的数据模型是 RDD,很多时候 RDD 可以实现为分布式共享内存或者完全虚拟化(即有的中间结果 RDD 当下游处理完全在本地时可以直接优化省略掉)。这样可以省掉很多不必要的 I/O。 Spark用 RDD上的变换(算子)来描述数据处理。每个算子生成一个新的 RDD。所有的算子组成一个DAG, Spark 比较简单地把边分为宽依赖和窄依赖,上下游数据不需要 shuffle 的即为窄依赖,可以把上下游的算子放在一个 stag原创 2021-04-12 00:49:10 · 131 阅读 · 0 评论