flink入门
文章平均质量分 55
颜渊月和F
这个作者很懒,什么都没留下…
展开
-
Flink Timer定时器机制与具体实现
Flink TimerTimer简介Timer使用举例Timer的特点Timers的原理分析Timer简介Timer定时器是Flink Streaming API提供的用于感知并利用处理时间/事件事件变化的机制最显示了timer的方式就是KeyedProcessFunction.在其processElement()方法中注册Timer,然后覆盖其onTimer方法作为Timer触发时间的回调逻辑,根据时间特征的不同:处理时间–调用context.timerService().registerPro原创 2021-03-16 16:46:40 · 2553 阅读 · 6 评论 -
Flink 的state管理(1) -Flink SQL的状态清理
Flink 的状态管理Flink SQL实现状态清理Flink SQL实现状态清理背景:分组处理产生的结果会作为中间状态存储下来,随着分组key的不断增加,状态自然也就会不断膨胀。但是这些状态数据基本都具有时效性,不必永久保留。例如:topN语法进行去重,重复的数据一般都位于特定的区间内(例如1小时或者1天),过了这段时间之后,对应的状态就不需要了。随着时间的增长以及key的增加,面临超出存储的风险越来越大。在一些continuous queries的情况下,不得不去限制state的大小。是否去限制s原创 2021-03-16 11:32:02 · 3737 阅读 · 0 评论 -
Flink 的state管理(2) -Flink State的TTL
Flink state 的 TTL概述:flink进行实时计算中,会遇到一些状态不断累积,导致状态越来越大的情况。例如:作业中定义了超长的时间窗口,或者在动态表上应用了无限范围的Group By语句,以及执行了没有时间窗口限制的双流join等操作。对于这些情况,经常导致堆内存出现OOM,或者堆外内存RocksDB用量持续增长超出容器配额的上线,造成作业频繁的崩溃。从Flink 1.6版本开始引入State TTL机制,该特性可以允许作业中定义的keyed状态进行超时自动处理,对于TableAPI和SQL原创 2021-03-16 11:31:12 · 995 阅读 · 2 评论 -
Flink入门(8)-Flink作业提交流程
Flink作业提交流程概述概述1.在Flink Client中,通过反射启动jar中的main函数,生成FlinkStreamGraph和JobGraph,将JobGraph提交给Flink集群2.Flink集群收到JobGraph(JobManager收到)后,将JobGraph翻译成ExecutionGraph,然后开始调度,启动成功之后开始消费数据。pipelineExecutor有多种实现,session模式下:AbstractSessionClusterExecutorper-jo原创 2021-03-05 11:20:23 · 610 阅读 · 1 评论 -
Flink入门(7)--Table API和Flink SQL
Table API & SQL概述代码入门依赖编码流程概述Table API 和 SQL是批流统一的上层处理API,无论是批输入还是流输入,在这两套API中,制定的查询都具有相同的语义,得到相同的结果代码入门依赖flink-table-api-java-bridge:桥接器,主要负责tableAPI 和 DataStream/DataSet API 的连接支持flink-table-planner-blink: 计划器,table API的最主要部分,提供了运行时环境和生成程序执行计原创 2021-03-05 10:36:18 · 274 阅读 · 1 评论 -
Flink入门(4)--水印机制watermark
Flink WaterMarkFlink中的TimeWatermarkFlink中的TimeeventTime 事件时间IngestionTime 摄入时间ProcessingTime 处理时间//设置使用事件时间,flink的时间属性env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime) Watermark水印是用来触发窗口执行,解决网络延迟的问题公式:水印时间 = 事件时间-允许延迟时间水印时间达到窗口结束时间原创 2021-03-03 10:08:39 · 611 阅读 · 2 评论