Flink入门进阶
文章平均质量分 93
本专栏为大数据技术的要点说明
天蓝_BlueSky
孜孜不倦,持之以恒!
展开
-
Flink-按键分区状态-算子状态-广播状态
💎💎💎💎💎 按键分区状态(Keyed State)顾名思义,是任务按照键(key)来访问和维护的状态。它的特点非常鲜明,就是以 key 为作用范围进行隔离。 在进行按键分区(keyBy)之后,具有相同键的所有数据,都会分配到同一个并行子任务中;所以如果当前任务定义了状态,Flink 就会在当前并行子任务实例中,为每个键值维护一个状态的实例。于是当前任务就会为分配来的所有数据,按照 key 维护和处理对应的状态。1.值状态(ValueState) 顾名思义,状态中只保存一个“值”(value)原创 2022-12-25 17:02:28 · 1221 阅读 · 0 评论 -
Flink-状态编程的基本概念
具体来讲,托管状态是由 Flink 的运行时(Runtime)来托管的;在配置容错机制后,状态会自动持久化保存,并在发生故障时自动恢复。当应用发生横向扩展时,状态也会自动地重组分配到所有的子任务实例上。对于具体的状态内容,Flink 也提供了值状态(ValueState)、列表状态(ListState)、映射状态(MapState)、聚合状态(AggregateState)等多种结构,内部支持各种数据类型。聚合、窗口等算子中内置的状态,就都是托管状态;原创 2022-12-24 10:22:45 · 852 阅读 · 0 评论 -
Flink-基本的合流操作
💎💎💎💎💎在代码中,我们只要基于 DataStream 直接调用.union()方法,传入其他 DataStream 作为参数,就可以实现流的联合了;得到的依然是一个 DataStream:注意:union()的参数可以是多个 DataStream,所以联合操作可以实现多条流的合并。注意:对于合流之后的水位线,也是要以最小的那个为准 数据类型不能改变1.连接流(ConnectedStreams)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ejyQTMlQ原创 2022-12-23 16:51:13 · 996 阅读 · 0 评论 -
Flink-使用filter和SideOutPut进行分流操作
所谓“分流”,就是将一条数据流拆分成完全独立的两条、甚至多条流。也就是基于一个DataStream,得到完全平等的多个子 DataStream。一般来说,我们会定义一些筛选条件,将符合条件的数据拣选出来放到对应的流里。原创 2022-12-23 13:32:54 · 1557 阅读 · 0 评论 -
Flink-基本处理函数(ProcessFunction)
是无论那种算子,如果我们想要访问事件的时间戳,或者当前的水位线信息,都是完全做不到的。在定义生成规则之后,水位线会源源不断地产生,像数据一样在任务间流动,可我们却不能像数据一样去处理它;跟时间相关的操作,目前我们只会用窗口来处理。而在很多应用需求中,要求我们对时间有更精细的控制,需要能够获取水位线,甚至要“把控时间”、定义什么时候做什么事,这就不是基本的时间窗口能够实现的了。 于是必须祭出大招——处理函数(ProcessFunction)了。处理函数提供了一个“定时服务”(Time原创 2022-12-23 13:14:47 · 246 阅读 · 0 评论 -
Flink水位线-详细说明
在Flink中,**水位线是一种衡量Event Time进展的机制**,用来处理实时数据中的乱序问题的,通常是水位线和窗口结合使用来实现。 从设备生成实时流事件,到Flink的source,再到多个oparator处理数据,过程中会受到网络延迟、背压等多种因素影响造成数据乱序。 具体实现上,==水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来指示当前的事件时间。==而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取时间戳,作为原创 2022-11-19 17:38:18 · 1326 阅读 · 0 评论 -
Flink窗口及其分类-详细说明
Flink 是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。想要更加方便高效地处理无界流,一种方式就是将无限数据切割成有限的“数据块”进行处理,这就是所谓的“窗口”(Window)。所以在 Flink 中,窗口其实并不是一个“框”,流进来的数据被框住了就只能进这一个窗口。相比之下,我们应该把窗口理解成一个“桶”。在 Flink 中,窗口可以把流切割成有限大小的多个“存储桶”(bucket);每个数据都会分发到对应的桶中,当到达窗口结束时间时,就对每个桶中收集的数据进行计算处理。原创 2022-11-19 17:21:19 · 5752 阅读 · 0 评论 -
Flink的六种物理分区策略
当 Flink 提 供 的 所 有 分 区 策 略 都 不 能 满 足 用 户 的 需 求 时 , 我 们 可 以 通 过 使 用partitionCustom()方法来自定义分区策略。可以通过字段名称指定,也可以通过字段位置索引来指定,还可以实现一个 KeySelector// 创建执行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment . getExecutionEnvironment();} }.原创 2022-11-17 11:50:51 · 1205 阅读 · 0 评论 -
Flink基本转换算子
1.映射(map)2.过滤(filter)3.扁平映射(flatMap)4.按键分区(keyBy)5. 简单聚合(sum,min,max等)6.归约聚合(reduce)7.自定义函数原创 2022-12-15 13:32:35 · 469 阅读 · 0 评论 -
Flink架构&重要概念解析-超详理解
在 Standalone 部署时,因为 TaskManager 是单独启动的(没有Per-Job 模式),所以 ResourceManager 只能分发可用 TaskManager 的任务槽,不能单独启动新TaskManager。比如我们在上一章实践过的独立集群环境的会话模式,就是需要先启动集群,如果资源不够,只能等待资源释放,而不会直接启动新的 TaskManager。 TaskManager 是 Flink 中的工作进程,数据流的具体计算就是它来做的,所以也被称为“Worker”。原创 2022-11-15 16:47:15 · 1414 阅读 · 0 评论