Flink
文章平均质量分 82
土豆马铃薯
路在脚下,勇往直前!
展开
-
Flink之Watermark
Watermark是Apache Flink提出的一种用来解决乱序、延迟数据等情况的解决方案。它是建立在事件时间上的一个概念,用来刻画数据流的完整性。如果按照处理时间来衡量事件,一切都是有序的、完美的,自然而然也就不需要Watermark了。换句话说事件时间带来了乱序的问题,而Watermark就是用来解决乱序问题。所谓的乱序,其实就是有事件延迟了,对于延迟的元素,我们不可能无限期的等下去,必须要有一种机制来保证一个特定的时间后,必须触发Window进行计算。原创 2023-08-31 15:18:18 · 1447 阅读 · 0 评论 -
Flink状态和状态管理
官方定义:当前计算流程需要依赖到之前计算的结果,那么之前计算的结果就是状态。这句话还是挺好理解的,状态不只存在于Flink,也存在生活的方方面面,比如看到一个认识的人,如果识别认识呢?就是眼睛看到这个人的样子,再和大脑记忆中的人做对比,就知道认识这个人,其中大脑记忆中的人就是存储在状态中。状态又分为无状态和有状态。原创 2023-08-17 16:29:56 · 677 阅读 · 0 评论 -
Flink作业调度的9种状态
Flink 通过 Task Slots 来定义执行资源。每个 TaskManager 有一到多个 task slot,每个 task slot 可以运行一条由多个并行 task 组成的流水线。这样一条流水线由多个连续的 task 组成,比如并行度为 n 的 MapFunction 和 并行度为 n 的 ReduceFunction。原创 2023-08-03 22:50:43 · 1122 阅读 · 0 评论 -
Flink回撤流
Flink 的回撤流是指在 Flink 的流处理算法中,撤回已经发送到下游节点的数据。这是因为在实际应用场景中,有些错误数据可能会发送到下游节点,因此需要回撤流以保证数据的准确性。回撤流可以理解为流式场景下对数据进行更新,这里的更新数据并不是将发往下游的历史数据进行更改,要知道,已经发往下游的消息是追不回来的。原创 2023-07-27 23:20:47 · 3263 阅读 · 1 评论 -
Flink SQL之常用函数(二)
例如:select CURRENT_DATE;返回 2021-10-08例如:select CURRENT_TIME;返回 09:25:28.137例如:select CURRENT_TIMESTAMP;返回 2021-10-08T09:23:15.180 --注意和时区有关系例如:select LOCALTIMESTAMP;返回 2021-10-08T17:19:47.787例如:select LOCALTIME;返回 17:22:16.212。原创 2023-07-20 22:37:43 · 5761 阅读 · 0 评论 -
Flink SQL之常用函数(一)
可根据使用的版本查找,该链接为1.12版本。原创 2023-07-13 17:22:28 · 1912 阅读 · 0 评论 -
Flink SQL之窗口JOIN
滚动窗口有固定的尺寸,窗口间的元素无重复示例:每10分钟将10分钟内的金额汇总计算。原创 2023-07-07 08:50:07 · 675 阅读 · 0 评论 -
Flink SQL之Temporal Joins
时态表是一个随时间演变的表,在Flink中也称为动态表。时态表中的行与一个或多个时态周期相关联,并且所有Flink表都是时态的(动态的)。时态表包含一个或多个版本化的表快照,它可以是跟踪更改的更改历史表(例如数据库更改日志,包含所有快照),也可以是具体化更改的维表(例如包含最新快照的数据库表)。时态表可以分为和。时态join类型。原创 2023-06-29 16:22:10 · 1747 阅读 · 0 评论 -
Flink SQL之Interval Joins
区间是双流join的优化,基于处理时间或事件时间,在一定时间区间内数据,相同的key进行join(支持 Batch\Streaming)。Interval Join 可以让一条流去 Join 另一条流中前后一段时间内的数据。对于stream查询,时间区间oin只支持有时间属性的 append-only表。由于时间属性是准单调递增的,Flink可以从其状态中删除旧值,而不会影响结果的正确性。优点:由于给定了关联的区间,因此只需要保留很少的状态,内存压力较小。原创 2023-06-14 16:10:06 · 1948 阅读 · 4 评论 -
Flink SQL之Regular Joins
双流join是最通用的联接类型(支持 Batch\Streaming),其中任何新记录或联接两侧的更改都是可见的,并影响整体的Join结果。适用场景:因为资源问题 Regular Join 通常是不可持续的,一般只用做有界数据流的 Join。原创 2023-06-01 16:36:35 · 588 阅读 · 0 评论 -
Flink自定义函数之表值聚合函数(UDTAGG函数)
自定义表值聚合函数(UDTAGG)可以把一个表(一行或者多行,每行有一列或者多列)聚合成另一张表,结果中可以有多行多列。理解:假设有一个饮料的表,这个表有 3 列,分别是 id、name 和 price,一共有 5 行。假设你需要找到价格最高的两个饮料,类似于 top2() 表值聚合函数。你需要遍历所有 5 行数据,结果是有 2 行数据的一个表。原创 2023-05-25 15:38:04 · 994 阅读 · 0 评论 -
Flink自定义函数之表值函数(UDTF函数)
用户定义的表函数将零个,一个或多个标量值作为输入参数。返回任意数量的行作为输出,返回的行可以包含一个或多个列。与标量函数区别:相同:都是将零个、一个或多个标量值作为输入参数差异:标量函数返回单个值作为输出,表值函数返回任意数量的行作为输出。原创 2023-05-18 17:40:06 · 398 阅读 · 0 评论 -
Flink自定义函数之聚合函数(UDAGG函数)
聚合函数:将一个表的一个或多个行并且具有一个或多个属性聚合为标量值。聚合函数理解:假设一个关于饮料的表。表里面有三个字段,分别是 id、name、price,表里有 5 行数据。假设你需要找到所有饮料里最贵的饮料的价格,即执行一个 max() 聚合。你需要遍历所有 5 行数据,而结果就只有一个数值。原创 2023-05-11 20:16:20 · 1172 阅读 · 0 评论 -
Flink自定义函数之标量函数(UDF函数)
flink本身给我们提供了大量的内置函数,已经能满足我们绝大部分的需求,但是如果确实是碰到了一些特殊的场景,无法满足我们的需求的时候,我们可以使用自定义函数来解决。自定义函数大致可以分为标量函数(UDF函数)、表值函数(UDTF函数)、聚合函数(UDAGG函数)和表值聚合函数(UDTAGG函数)。原创 2023-04-27 16:28:54 · 944 阅读 · 0 评论 -
Flink窗口函数
Flink窗口函数是指对数据流中的数据进行分组和聚合操作的函数。FlinkSQL支持对一个特定的窗口的聚合。例如有用户想统计在过去的1分钟内有多少用户点击了某个的网页。在这种情况下,我们可以定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。在Flink中,窗口函数可以分为两种类型:时间窗口和计数窗口。时间窗口是指按照时间对数据流进行分组和聚合操作。计数窗口是指按照数据条数对数据流进行分组和聚合操作。原创 2023-04-21 15:27:34 · 627 阅读 · 0 评论 -
Flink时间属性
Flink支持三种与流数据处理相关的时间概念:Processing Time、Event Time和Ingestion Time。具体如下图所示:当前Flink仅支持Processing Time和Event Time。原创 2023-04-14 14:34:49 · 996 阅读 · 0 评论 -
Flink内存模型
flink内存按功能模块可分为taskmanager与jobmanger。原创 2023-03-30 18:00:28 · 668 阅读 · 0 评论