![](https://img-blog.csdnimg.cn/cad7699c5c394173ac6cf3649acb3f22.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Flink
文章平均质量分 74
Flink
瑟 王
失业中
展开
-
Flink教程(23) 详解 算子链 并行度 Task
详解 算子链 并行度 Task亚瑟王镇楼一、前言二、WordCount程序的Job Graph(任务图)1. 代码和Job Graph(任务图)的对应关系2. 什么是并行度Parallelism?2. 为什么Socket Stream的**Parallelism**是1,后面2个的**Parallelism**是8?3. 如何设置并行度?3.1 Flink配置文件3.2 WebUI或者CLI3.3 代码中设置env全局并行度3.4 代码中设置算子的并行度3.5 并行度的优先级三、算子合并优化机制1. Wor原创 2021-04-07 19:22:30 · 3338 阅读 · 3 评论 -
Flink教程(22) 窗口 interval join的使用案例
Flink 窗口 interval join的使用一、前言二、interval join介绍三、语法案例一、前言在之前的博客两条流关联 window窗口的 join leftJoin使用案例中,介绍了window join的使用方法。但是window join可能稍微复杂和麻烦,现在在真实的工作中,用interval join的情况比较多。interval join相对逻辑简单,好理解些。二、interval join介绍interval join只支持事件时间的场景只能支持两条流的关联在原创 2021-04-01 16:01:55 · 2256 阅读 · 0 评论 -
Flink教程(21) EventTime事件时间 Watermark水位线 注意点
Flink Window窗口 EventTime事件时间 Watermark水位线一、前言二、事件时间1. 时间一定是精确到毫秒2. 注意时区问题,我们在东八区3. 时间窗口是左闭右开4. 时间窗口的开始时间如何计算?三、水位线1. 水位线的特点2. 水位线控制窗口何时结束一、前言Flink中窗口、事件时间、水位线都是很重要的概念,网上介绍他们的博客非常多。我就没有必要像写八股文那样再写一遍。窗口、事件时间、水位线这3个东西放在一起,他们其实解决一个问题,那就是窗口在什么时候关闭,并触发计算?下原创 2021-03-31 18:18:11 · 1653 阅读 · 0 评论 -
Flink教程(20) 窗口函数 ReduceFunction AggregateFunction ProcessWindowFunction 结合使用
ReduceFunction AggregateFunction ProcessWindowFunction 结合使用一、窗口函数的分类1. 全量和增量的区别2. apply和process的区别3. reduce和aggregate的区别二、AggregateFunction和ProcessWindowFunction结合使用1. 需求背景2. 分析3. 程序主体4. AggregateFunction5. ProcessWindowFunction一、窗口函数的分类大多数Flink应用都是要划分窗口原创 2021-03-31 17:12:40 · 6211 阅读 · 6 评论 -
Flink教程(19) Flink架构 JobManager TaskManager Task SubTask Slot
Flink架构 JobManager TaskManager Task SubTask一、前言二、Flink架构1. JobManager1.1 JobMaster1.2 ResourceManager1.3 Dispatcher2. TaskManager2.1 Task和SubTask2.2 Slot 插槽一、前言最近发现玩游戏有点过头,夜里2点多还在玩,玩了一千多场亚瑟,拿到了第2次16.0分。感觉自己挺厉害,其实还是个菜。打算最近不能玩王者了,太容易上瘾,只要有时间控制不住的玩。而且我自己特别.原创 2021-03-29 20:01:49 · 3613 阅读 · 7 评论 -
Flink教程(18) Flink1.12.0 批流一体 setRuntimeMode(RuntimeExecutionMode.BATCH) 问题解决
一、问题在Flink1.12.0有个重要的功能,批流一体,就是可以用之前流处理的API处理批数据。只需要调用setRuntimeMode(RuntimeExecutionMode executionMode)。RuntimeExecutionMode 就是一个枚举,有流、批和自动。@PublicEvolvingpublic enum RuntimeExecutionMode { STREAMING, BATCH, AUTOMATIC; private Runtim原创 2021-03-29 10:02:46 · 3367 阅读 · 2 评论 -
Flink教程(17) Keyed State状态管理之AggregatingState使用案例 求平均值
Keyed State状态管理之AggregatingState使用案例 求平均值一、AggregatingState的方法二、AggregatingState描述器三、自定义的AggregateFunction类四、程序主体五、KeyedProcessFunction处理类一、AggregatingState的方法AggregatingState需要和AggregateFunction配合使用add()方法添加一个元素,触发AggregateFunction计算get()获取State的值原创 2021-03-23 18:15:28 · 2483 阅读 · 1 评论 -
Flink教程(16) Keyed State状态管理之ReducingState使用案例 求最大值
Keyed State状态管理之ReducingState使用案例一、ReducingState的方法二、ReducingState的描述器三、程序主体四、KeyedProcessFunction处理类一、ReducingState的方法ReducingState是和ReduceFunction配合使用get() 获取状态的值add(IN value)方法添加一个元素,触发reduceFunction计算一次二、ReducingState的描述器ReducingState的描述器和之前Va原创 2021-03-23 17:42:13 · 2263 阅读 · 2 评论 -
Flink教程(15) Keyed State状态管理之ListState使用 ValueState实现
Keyed State状态管理之ListState使用案例一、ListState的方法二、代码案例1. 需求2. 主体3. 处理方法4. 运行结果一、ListState的方法get()方法获取值add(IN value),addAll(List values)方法更新值update(List values) 用新List 替换 原来的Listclear() 清空List,List还存在,但是没有元素二、代码案例1. 需求记录每个人的历史操作信息,例如输入1,login1,buy原创 2021-03-23 15:16:58 · 4625 阅读 · 1 评论 -
Flink教程(14) Keyed State状态管理之MapState使用案例
KeyedState状态之MapState使用案例一、MapState的方法二、定义MapStateDescriptor和获取MapState三、统计温度升高/降低超过阈值的次数一、MapState的方法MapState的方法和Java的Map的方法极为相似,所以上手相对容易。常用的有如下:get()方法获取值put(),putAll()方法更新值remove()删除某个keycontains()判断是否存在某个keyisEmpty() 判断是否为空二、定义MapStateDescr原创 2021-03-22 18:17:43 · 10619 阅读 · 2 评论 -
Flink教程(13) Keyed State状态管理之ValueState的使用 温差报警
KeyedState状态之ValueState的使用 温差报警一、ValueState的方法二、实验案例1. 温度Bean2. 将字符串映射成SensorRecord对象3. ValueStateDescriptor描述器4. 程序主题5. KeyedProcessFunction处理数据流一、ValueState的方法ValueState的使用比较简单,方法如下图用ValueStateDescriptor定义ValueState的描述器value()方法获取值update(T value)方法原创 2021-03-22 17:07:44 · 5970 阅读 · 0 评论 -
Flink教程(12) 两条流关联 window窗口的 join leftJoin使用案例
两条流关联 window窗口的 join leftJoin使用案例一、温度数据和实体类1. 温度数据2. 实体类3. 将字符串映射成SensorRecord对象二、window join1. 获取2条数据流2. join的代码3. KeySelector4. 设置join后的结果对象三、window left join1. left join主体代码2. MyCoGroupFunction一、温度数据和实体类1. 温度数据第一个是id,第二个四温度,第三个是事件事件1,20.5,2021-01-29原创 2021-03-19 17:51:10 · 1748 阅读 · 0 评论 -
Flink教程(11) KeyedProcessFunction的使用
一、前言KeyedProcessFunction是用来处理KeyedStream的。每有一个数据进入算子,则会触发一次processElement()的处理。它还提供了计时器的功能,在特定场景下,非常适合。二、结构KeyedProcessFunction继承AbstractRichFunction,它和ProcessFunction类似,都有processElement()、onTimer(),且都是富函数,自然有open()和close()方法。1. processElement先看下proc原创 2021-02-03 18:31:08 · 4467 阅读 · 0 评论 -
Flink教程(10) 元组Tuple POJO用KeySelector 多个字段keyBy
一、元组假设有个流DataStream<Tuple2<String, Integer>> wordAndOne = ....1. 单个字段keyBy用字段位置wordAndOne.keyBy(0)用字段表达式wordAndOne.keyBy(v -> v.f0)2. 多个字段keyBy用字段位置wordAndOne.keyBy(0, 1)用KeySelectorwordAndOne.keyBy(new KeySelector<Tuple2&原创 2021-01-25 17:29:42 · 4315 阅读 · 7 评论 -
Flink教程(9) KeyedProcessFunction 状态编程 温度连续升高并报警
状态编程ValueState 温度连续升高并报警ValueState不光能存简单的类型,例如Interger,Long,Double等,也可以存POJO,下面定义一个实体类,表示一个采集温度的信息public class SensorRecord { //设备ID private String id; //当前温度 private Double record; //当前时间戳 private Long time; //无参构造器必要 public Se原创 2021-01-14 18:46:50 · 921 阅读 · 1 评论 -
Flink教程(8) Checkpoint 状态管理 读取Kafka并写入Redis(实现exactly once)
一、前言结语原创 2021-01-14 08:33:41 · 2022 阅读 · 2 评论 -
Flink教程(7) 时间特性、窗口、Watermark代码实践,支持Flink1.12
一、前言时间、窗口和Watermark是Flink的很重要的概念,学习它们是掌握运用Flink的重中之重。二、时间特性在DataStream API中,你可以用时间特性告知Flink在创建窗口时如何定义时间。时间特性是StreamExecutionEnvironment的一个属性,它可以接受如下值。1 ProcessingTime 处理时间简单来说,处理时间就是Flink算子处理该条数据时,当前的系统时间。通常,在窗口算子中使用处理时间会导致不确定的结果,因为这取决于数据到达Flink窗口时原创 2020-12-17 18:36:13 · 2764 阅读 · 1 评论 -
Flink教程(6) Flink 重启策略
Flink 重启策略一、前言二、Flink为何要重启?三、什么是state?四、state的分类1 operator state2 keyed state五、什么是checkpoint?六、Flink重启策略有哪些?1 固定延迟重启2 失败率重启3 不重启4 固定延迟重启 和 失败率重启的注意点5 代码案例七、结语一、前言在说Flink的重启策略有哪些之前,我们有必要先了解下Flink重启的目的和其它相关的术语,例如state、state backend和checkpoint等。如果学习新知识,上来就原创 2020-12-02 17:13:21 · 1712 阅读 · 3 评论 -
Flink教程(5) DataStream 常用算子(下)
一、前言在上一篇博客Flink教程(二)DataStream Transformations 常用算子(上),我总结了一些基础的算子,这些算子从功能上看属于映射、过滤和聚合的类型。本篇想介绍些归约功能的算子。还有学习一门新的技术,的确需要坚持和多实践,不要急于求成。反正时间一大把,我们可以专心的学一两门技术,做到熟练至精通。不要想着学很多十八般武艺,成为所谓的全才。例如一个人比较精通Elasticsearch和Flink,那么同事遇到相关问题时也会想到来请教他。在开发会议上给出的建议也有一定的分量。原创 2020-12-01 16:09:21 · 805 阅读 · 0 评论 -
Flink教程(4) DataStream 常用算子(上)
一、前言算子会将一个或多个DataStream转换成一个新的DataStream。在工作中使用最多的也就这些DataStream转换算子,学好这些算子是入门Flink的必要。好在Flink的某些算子和Java8的lambda函数很像,这便于理解。下面我会先介绍Java的语法,再介绍Flink的语法,由浅入深。下面可以从图中看到DataStream和不同Stream之间,经过不同算子可以相互转换。二、Map2.1 Java Lambda的MapMap对于Stream中包含的元素使用给定的转换函原创 2020-12-01 16:07:04 · 1495 阅读 · 0 评论 -
Flink教程(3) 大白话 时间 窗口 watermark
大白话 时间 窗口 watermark1. 前言2. Time(时间)2.1 举个栗子2.2 设置时间类型3. Window(窗口)3.1 窗口的分类3.1.1 滚动窗口3.1.2 滑动窗口4. Watermark(水位线)5. 总结1. 前言2. Time(时间)在流式计算中,时间Time是一个很重要的概念,这里不搬运官文解释,就举个栗子吧。2.1 举个栗子假设有个股票数据量化系统:首先爬虫从新浪财经上获取当前股票最新价格(每5秒取一次价格),然后推到Kafka。Flink程序从Kafka原创 2020-06-14 11:29:26 · 1632 阅读 · 3 评论 -
Flink教程(2) DataStream聚合 keyBy sum min和minBy区别
Flink 时间语义 窗口 watermark 聚合算子 多流算子原创 2020-06-11 18:07:55 · 3966 阅读 · 0 评论 -
Flink教程(1) Flink DataStream 创建数据源 转换算子
Flink基础入门 离线+实时WordCount流无界/有界有状态什么是状态状态基础类型Exactly-once利用内存性能时间事件时间Watermark迟到事件处理处理时间分层API流无界/有界有状态什么是状态状态基础类型Exactly-once利用内存性能时间事件时间Watermark迟到事件处理处理时间分层API...原创 2020-06-04 00:53:08 · 3261 阅读 · 0 评论