![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
大数据入门核心技术
文章平均质量分 87
大数据入门核心技术是全网最具价值的付费专栏之一,里面有集合Hadoop、Hive、HBase、Spark、Flink等大数据必学的核心技术,活动价49.9元,7天后涨价,会慢慢恢复到原价99元,火热🔥订阅中;早买不会亏,已购买的对于涨价不影响,关健你能学到真正有用的知识,这才是本栏目的价值所在
优惠券已抵扣
余额抵扣
还需支付
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Lansonli
CSDN大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
大数据学习指南从入门到精通
利用框架的力量,看懂游戏规则,才是入行的前提大多数人不懂,不会,不做,才是你的机会,你得行动,不能畏首畏尾选择才是拉差距关键,风向,比你流的汗水重要一万倍,逆风划船要累死人的为什么选择学习大数据开发,不选择Java开发?借棋弈做比喻,智商高的不要选择五子琪,要选择围棋,它能长久地吸引你。不都是在棋盘上一颗黑子一颗白子地下吗?因为围棋更复杂,能够掌握如此复杂的技艺、产生稳定输出的棋手、让我们更佩服。选择学习大数据开发也如此,能让你的职业生涯走得更远,少走弯路。原创 2022-05-21 15:57:40 · 20076 阅读 · 184 评论 -
PostgreSQL基础(八):表的基本操作(二)
相比之前的普通视图,物化视图就不需要每次都查询复杂SQL,每次查询的都是真实的物理存储地址中的一份数据(表)。如果要更新物化视图,可以采用触发器的形式,当原表中的数据被写后,可以通过触发器执行同步物化视图的操作。PostgreSQL中,对物化视图的同步,提供了两种方式,一种是全量更新,另一种是增量更新。视图对于用户来说,就是一张真实的表,可以直接基于视图查询一张或者多张表的信息。在有索引的情况下,再基于name做等值查询,看时间,同时看执行计划。在PGSQL中,简单(单表)的视图是允许写操作的。原创 2024-06-03 14:55:14 · 104 阅读 · 0 评论 -
PostgreSQL基础(七):表的基本操作(一)
其实指定表空间的存储位置后,PGSQL会在$PG_DATA目录下存储一份,同时在咱们构建tablespace时,指定的路径下也存储一份。当对标进行insert,update,delete,truncate操作时,会触发表的Trigger(看触发器的创建时指定的事件)在存储数据时,数据肯定要落到磁盘上,基于构建的tablespace,指定数据存放在磁盘上的物理地址。进一步会发现,其实在PGSQL的默认目录下,存储的是一个link,连接文件,类似一个快捷方式。触发器Trigger,是由事件出发的一种存储过程。原创 2024-06-02 13:57:00 · 64 阅读 · 0 评论 -
PostgreSQL基础(五):PostgreSQL基本操作和数据类型介绍
告诉缓存,插入的数据比较多,可以指定告诉缓存,一次性计算出20个后续的值,nextval时,就不可以不去计算,直接去高速缓存拿值,效率会有一内内的提升。双引号用来标识一个关键字,比如表名,字段名。数值操作也提供了一些函数,比如pi(),round(数值,位数),floor(),ceil()PGSQL提供了序列的数据类型,可以在声明表结构时,直接指定序列的类型即可。如果是单独构建序列,再构建表,使用传统方式实现,序列和表就是相对独立的。布尔类型简单的一批,可以存储三个值,true,false,null。原创 2024-05-31 23:09:30 · 71 阅读 · 0 评论 -
PostgreSQL基础(二):PostgreSQL的安装与配置
postgreSQL的核心文件,都属于postgres用户,操作的时候,尽可能的别用root用户,容易玩出坑,尽可能先切换到postgres用户去玩。要搞两个配置信息,一个关于postgreSQL的远程连接配置以及postgreSQL的日志配置。为了实现远程连接,除了用户级别的这种配置,还要针对服务级别修改一个配置。postgreSQL默认情况下,只保存7天的日志,循环覆盖。原创 2024-05-25 16:07:16 · 258 阅读 · 0 评论 -
大数据面试题(十):Hive的高频面试考点(二)
Hive是基于Hadoop的⼀个数据仓库⼯具,可以将结构化的数据⽂件映射为⼀张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。null在hive底层默认是⽤"\N"来存储的,所以在sqoop到mysql之前需要将为null的数据加工成其他字符,否则sqoop提示错误。对数据的细化,取模分开存储数据,提高查询效率。原创 2024-05-07 07:00:00 · 118 阅读 · 0 评论 -
大数据面试题(九):Hive的高频面试考点(值得收藏)
表。存的是和hdfs的映射关系,hive是逻辑上的数据仓库,实际操作的都是hdfs上的⽂ 件,HQL就是⽤sql语法来写的mr程序。hive是数据仓库,不能和数据库⼀样进⾏实时的CURD操作。是⼀次写⼊多次读取的操作,可以看成是ETL工具。将小表存⼊内存中,将⼩表复制多份,让每个map task内存中保留⼀份(⽐如存放到hash table中),这样只需要扫描⼤表。对于⼤表中的每⼀条记录key/value,在hash table中查找是否有相同的key,如果有,则连接后输出即可。原创 2024-05-05 19:19:27 · 120 阅读 · 2 评论 -
大数据Flink(一百零五):SQL性能调优
因此如果你要做这个优化,需要提前做一下吞吐量和延迟之间的权衡,但是大多数情况下,buffer 数据的延迟都是可以被接受的。:其核心思想在于按照 distinct 的 key,即 user_id,先做数据的分桶,将数据打散,分散到 Flink 的多个 TM 上进行计算,然后再将数据合桶计算。:在聚合数据处理场景中,很可能会由于热点数据导致数据倾斜,如下 SQL 所示,当 color = RED 为 50000w 条,而 color = BLUE 为 5 条,就产生了数据倾斜,而器数据处理的算子产生性能瓶颈。原创 2023-10-30 06:00:00 · 577 阅读 · 0 评论 -
大数据Flink(一百零四):SQL任务参数配置
在计算 count(1),sum(col) 场景汇总提效很高,因为 count(1),sum(col) 在经过本地 localAggregate 之后,每个 group by 的 key 就一个结果值。Flink SQL 相关参数需要在 TableEnvironment 中设置。Flink SQL 任务在生成执行计划时,优化生成更优的执行计划。用于优化 Flink SQL 任务在执行时的任务性能。原创 2023-10-27 22:09:09 · 1626 阅读 · 0 评论 -
大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)
Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与 Python UDAF 不同的是,针对同一组输入数据,Python UDTAF 可以产生 0 条、1 条、甚至多条输出数据。原创 2023-10-27 07:55:13 · 1026 阅读 · 1 评论 -
大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)
Python UDAF,即 Python AggregateFunction。Python UDAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等。针对同一组输入数据,Python AggregateFunction 产生一条输出数据。原创 2023-10-25 22:57:02 · 1212 阅读 · 0 评论 -
大数据Flink(一百零一):SQL 表值函数(Table Function)
Python UDTF,即 Python TableFunction,针对每一条输入数据,Python UDTF 可以产生 0 条、1 条或者多条输出数据,此外,一条输出数据可以包含多个列。如果你是使用 Scala 实现函数,不要使用 Scala 中 object 实现 UDF,Scala object 是单例的,有可能会导致并发问题。原创 2023-10-23 23:25:59 · 951 阅读 · 0 评论 -
大数据Flink(一百):SQL自定义函数(UDF)和标量函数(Scalar Function)
Python UDF,即 Python ScalarFunction,针对每一条输入数据,仅产生一条输出数据。目前 Flink 自定义函数可以基于 JVM 语言(例如 Java 或 Scala)或 Python 实现,实现者可以在 UDF 中使用任意第三方库,本章聚焦于使用 Python 语言开发自定义函数。自定义函数(UDF)是一种扩展开发机制,可以用来在查询语句里调用难以用 SQL 进行 直接 表达的频繁使用或自定义的逻辑。Flink 体系也提供了类似于其他大数据引擎的 UDF 体系。原创 2023-10-21 18:43:40 · 950 阅读 · 0 评论 -
大数据Flink(九十九):SQL 函数的解析顺序和系统内置函数
版本的 Flink 体系中,内置的系统函数没有像 Hive 内置的函数那么丰富,比如 Hive 中常见的 get_json_object 之类的,Flink 都是没有的,但是 Flink 提供了插件化 Module 的能力,能扩充一些 UDF,下一篇会进行介绍。由于精确函数应用一定会带上 Catalog 或者数据库名称,所以 Flink 中的精确函数引用一定是指向临时性 Catalog 函数或 Catalog 函数的。系统内置函数可以直接在 Flink 官网进行查询,这里就不多进行介绍。原创 2023-10-19 23:58:05 · 1015 阅读 · 0 评论 -
大数据Flink(九十八):SQL函数的归类和引用方式
在模糊函数引用中,用户只需在 SQL 查询中指定函数名就可以引用 UDF,例如: select myfunc(x) from mytable。当然如果系统函数和 Catalog 函数的名称是重复的,Flink 体系是会使用哪一个函数呢?请注意,在用户使用函数时,系统函数始终优先于 Catalog 函数解析,临时函数始终优先于持久化函数解析。Flink Table\SQL API 允许用户使用函数进行数据处理、字段标准化等处理。用户在 Flink 中可以通过精确、模糊两种引用方式引用函数。原创 2023-10-17 20:50:07 · 1037 阅读 · 0 评论 -
大数据Flink(九十七):EXPLAIN、USE和SHOW 子句
如果熟悉 MySQL 的同学会非常熟悉这个子句,在 MySQL 中,USE 子句通常被用于切换库,那么在 Flink SQL 体系中,它的作用也是和 MySQL 中 USE 子句的功能基本一致,用于切换 Catalog,DataBase,使用 Module。:如果熟悉 MySQL 的同学会非常熟悉这个子句,在 MySQL 中,SHOW 子句常常用于查询库、表、函数等,在 Flink SQL 体系中也类似。:EXPLAIN 子句其实就是用于查看当前这个 sql 查询的逻辑计划以及优化的执行计划。原创 2023-10-16 22:29:28 · 621 阅读 · 0 评论 -
大数据Flink(九十六):DML:Deduplication
Deduplication 其实就是去重,也即上文介绍到的 TopN 中 row_number = 1 的场景,但是这里有一点不一样在于其排序字段一定是时间属性列,不能是其他非时间属性的普通列。在 row_number = 1 时,如果排序字段是普通列 planner 会翻译成 TopN 算子,如果是时间属性列 planner 会翻译成 Deduplication,这两者最终的执行算子是不一样的,Deduplication 相比 TopN 算子专门做了对应的优化,性能会有很大提升。可以看到其有回撤数据。原创 2023-10-04 08:00:00 · 367 阅读 · 0 评论 -
大数据Flink(九十五):DML:Window TopN
还记得上文介绍 TopN 说道的 TopN 时会出现中间结果,从而出现回撤数据的嘛?Window TopN 不会出现回撤数据,因为 Window TopN 实现是在窗口结束时输出最终结果,不会产生中间结果。而且注意,因为是窗口上面的操作,Window TopN 在窗口结束时,会自动把 State 给清除。:Window TopN 是一种特殊的 TopN,它的返回结果是每一个窗口内的 N 个最小值或者最大值。:取当前这一分钟的搜索关键词下的搜索热度前 10 名的词条数据。测试代码,并nc -lk 8888。原创 2023-10-03 07:00:00 · 506 阅读 · 0 评论 -
大数据Flink(九十三):DML:Order By、Limit 子句
实时任务中,Order By 子句中必须要有时间属性字段,并且时间属性必须为升序时间属性,即 WATERMARK FOR rowtime_column AS rowtime_column - INTERVAL '0.001' SECOND 或者。,但在实时任务中一般用的非常少。原创 2023-10-01 06:00:00 · 271 阅读 · 0 评论 -
大数据Flink(九十四):DML:TopN 子句
TopN 其实就是对应到离线数仓中的 row_number(),可以使用 row_number() 对某一个分组的数据进行排序。原创 2023-10-02 06:30:00 · 357 阅读 · 0 评论 -
大数据Flink(九十二):DML:集合操作
上述 SQL 在流式任务中,如果一条左流数据先来了,没有从右流集合数据中找到对应的数据时会直接输出,当右流对应数据后续来了之后,会下发回撤流将之前的数据給撤回。上述 SQL 的 In 子句其实就和之前介绍到的 Inner Join 类似。并且 In 子查询也会涉及到大状态问题,大家注意设置 State 的 TTL。原创 2023-09-30 07:30:00 · 194 阅读 · 0 评论 -
大数据Flink(九十一):Array Expansion(数组列转行)和Table Function(自定义列转行)
:这个其实和 Array Expansion 功能类似,但是 Table Function 本质上是个 UDTF 函数,和离线 Hive SQL 一样,我们可以自定义 UDTF 去决定列转行的逻辑。:比如某些场景下,日志是合并、攒批上报的,就可以使用这种方式将一个 Array 转为多行。:将表中 ARRAY 类型字段(列)拍平,转为多行。SQL 表值函数(Table Function)原创 2023-09-27 08:00:00 · 441 阅读 · 0 评论 -
大数据Flink(九十):Lookup Join(维表 Join)
Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维表 Join。原创 2023-09-26 22:09:41 · 1934 阅读 · 0 评论 -
大数据Flink(八十九):Temporal Join(快照 Join)
比如常见的汇率数据(实时的根据汇率计算总金额),在 12:00 之前(事件时间),人民币和美元汇率是 7:1,在 12:00 之后变为 6:1,那么在 12:00 之前数据就要按照 7:1 进行计算,12:00 之后就要按照 6:1 计算。在事件时间语义的任务中,事件时间 12:00 之前的数据,要按照 7:1 进行计算,12:00 之后的数据,要按照 6:1 进行计算。事件时间的 Temporal Join 一定要把 Versioned Table 的主键包含在 Join on 的条件中。原创 2023-09-26 00:25:53 · 874 阅读 · 1 评论 -
大数据Flink(八十七):DML:Joins之Regular Join
流的上游是无限的数据,所以要做到关联的话,Flink 会将两条流的所有数据都存储在 State 中,所以 Flink 任务的 State 会无限增大,因此你需要为 State 配置合适的 TTL,以防止 State 过大。:Join 其实在我们的数仓建设过程中应用是非常广泛的。:Regular Join 其实就是和离线 Hive SQL 一样的 Regular Join,通过条件关联两条流数据输出。Join 的流程是左流新来一条数据之后,会和右流中符合条件的所有数据做 Join,然后输出。原创 2023-09-23 09:26:09 · 251 阅读 · 1 评论 -
大数据Flink(八十六):DML:Group 聚合和Over 聚合
而 Group by 聚合是没有时间语义的,不管数据迟到多长时间,只要数据来了,就把上一次的输出的结果数据撤回,然后把计算好的新的结果数据发出。而窗口聚合是在时间粒度上对数据进行分组,是纵向的。Group by 聚合涉及到了回撤流(也叫 retract 流),会产生回撤流是因为从整个 SQL 的语义来看,上游的 Kafka 数据是源源不断的,无穷无尽的,那么每次这个 SQL 任务产出的结果都是一个中间结果,所以每次结果发生更新时,都需要将上一次发出的中间结果给撤回,然后将最新的结果发下去。原创 2023-09-23 09:00:32 · 258 阅读 · 1 评论 -
大数据Flink(八十五):Window TVF 支持多维数据分析
这时,有离线 Hive SQL 使用经验的就会想到,如果有了 Grouping Sets,我们就可以直接用 Grouping Sets 将维度组合写在一条 SQL 中,写起来方便并且执行效率也高。对于经常需要对数据进行多维度的聚合分析的场景,您既需要对a列做聚合,也要对b列做聚合,同时要按照a、b两列同时做聚合,因此需要多次使用UNION ALL。CUBE会枚举指定列的所有可能组合作为GROUPING SETS,而ROLLUP会以按层级聚合的方式产生GROUPING SETS。也可以用于非窗口函数的场景。原创 2023-09-21 23:51:43 · 423 阅读 · 0 评论 -
大数据Flink(八十四):SQL语法的DML:窗口聚合
由于窗口涉及到的知识内容比较多,先为大家说明介绍下面内容时的思路,大家跟着思路走。首先来看看 Flink SQL 中支持的 4 种窗口的运算。原创 2023-09-20 21:40:45 · 691 阅读 · 4 评论 -
大数据Flink(八十三):SQL语法的DML:With、SELECT & WHERE、SELECT DISTINCT 子句
但是这可能会影响查询结果的正确性,比如某个 key 的数据过期从状态中删除了,那么下次再来这么一个 key,由于在状态中找不到,就又会输出一遍。可以看到这个实时任务的所有算子是以一种 pipeline 模式运行的,所有的算子在同一时刻都是处于 running 状态的,24 小时一直在运行,实时任务中也没有离线中常见的分区概念。可以看到离线任务的算子是分阶段(stage)进行运行的,每一个 stage 运行结束之后,然后下一个 stage 开始运行,全部的 stage 运行完成之后,这个离线任务就跑结束了。原创 2023-09-19 00:00:20 · 743 阅读 · 1 评论 -
大数据Flink(八十二):SQL语法的DDL:Create 子句
例如,我们可以使用元数据列从 Kafka 数据中读取 Kafka 数据自带的时间戳(这个时间戳不是数据中的某个时间戳字段,而是数据写入 Kafka 时,Kafka 引擎给这条数据打上的时间戳标记),然后我们可以在 Flink SQL 中使用这个时间戳,比如进行基于时间的窗口操作。如果只是简单的四则运算的话直接写在 DML 中就可以,但是计算列一般是用于定义时间属性的(因为在 SQL 任务中时间属性只能在 DDL 中定义,不能在 DML 语句中定义)。这些列本身是没有以物理形式存储到数据源中的。原创 2023-09-17 08:54:45 · 759 阅读 · 1 评论 -
大数据Flink(八十一):SQL 时区问题
在北京时区的用户使用 TIMESTAMP(3) 类型的时间列开最常用的 1 天的窗口时,划分出来的窗口范围是北京时间的 [2022-01-01 08:00:00, 2022-01-02 08:00:00],而不是北京时间的 [2022-01-01 00:00:00, 2022-01-02 00:00:00]。通过上述结果可见,使用处理时间进行开窗,在 UTC 时区下的计算结果与在 Asia/Shanghai 时区下计算的窗口开始时间,窗口结束时间和窗口的时间是不同的,都是按照时区进行格式化的。原创 2023-09-16 10:19:47 · 827 阅读 · 1 评论 -
大数据Flink(八十):Checkpoint的状态后端和重启策略
MemoryStateBackend内部将状态(state)数据作为对象保存在java堆内存中(taskManager),通过checkpoint机制,MemoryStateBackend将状态(state)进⾏快照并保存Jobmanager(master)的堆内存中。如果某个算子在节点A上失败,在节点B上恢复,使用本地文件时,在B上无法读取节点 A上的数据,导致状态恢复失败。您可以选择将状态保留在 JVM 堆上,或者如果它太大,则保留在有效组织的磁盘数据结构中,这取决于状态后端的配置。原创 2023-09-14 06:00:00 · 320 阅读 · 1 评论 -
大数据Flink(七十九):SQL 的容错(Checkpoint)
Checkpoint 保存数默认是 1,也就是只保存最新的 Checkpoint 的 State 文件,当进行 State 恢复时,如果最新的 Checkpoint 文件不可用时 (比如文件损坏或者其他原因),那么 State 恢复就会失败,如果设置 Checkpoint 保存数 3,即使最新的 Checkpoint 恢复失败,那么 Flink 也会回滚到上一次 Checkpoint 的状态文件进行恢复。一般来说,Checkpoint 时间间隔越长,需要生产的 State 就越大。原创 2023-09-13 19:00:00 · 226 阅读 · 1 评论 -
大数据Flink(七十八):SQL 的水印操作(Watermark)
4.后面几个以此类推,直到Event Time为:1648197590000的数据进来的时候,前一条数据的WaterMark为1648197589000,于是更新当前的WaterMark为1648197590000,Flink认为1648197590000之前的数据都已经到达,且达到了窗口的触发条件,开始进行计算。可以看到,设置了最大允许乱序时间后,WaterMark要比原来低5秒,可以对延迟5秒内的数据进行处理,窗口的触发条件也同样会往后延迟关于延迟时间,请结合业务场景进行设置。原创 2023-09-12 23:02:32 · 962 阅读 · 1 评论 -
大数据Flink(七十七):SQL窗口的Over Windows
按照时间区间聚合就是时间区间的一个滑动窗口,比如下面案例 1 小时的区间,最新输出的一条数据的 sum 聚合结果就是最近一小时数据的 amount 之和。按照行数聚合就是数据行数的一个滑动窗口,比如下面案例,最新输出的一条数据的 sum 聚合结果就是最近 5 行数据的 amount 之和。在 Hive 中也有相同的聚合,但是可以想想你在离线数仓经常使用嘛?:可以理解为是一种特殊的滑动窗口聚合函数。:计算最近一段滑动窗口的聚合结果数据。那这里我们拿 Over 聚合 与。原创 2023-09-11 23:39:37 · 375 阅读 · 3 评论 -
大数据Flink(七十六):SQL的渐进式窗口(CUMULATE)
这类指标是一段周期内的累计状态,对分析师来说更具统计分析价值,而且几乎所有的复合指标都是基于此类指标的统计(不然离线为啥都要累计一天的数据,而不要一分钟累计的数据呢)。渐进式窗口可以认为是首先开一个最大窗口大小的滚动窗口,然后根据用户设置的触发的时间间隔将这个滚动窗口拆分为多个窗口,这些窗口具有相同的窗口起点和不同的窗口终点。例如,从每日零点到当前这一分钟绘制累积 UV,其中 10:00 时的 UV 表示从 00:00 到 10:00 的 UV 总数。:渐进式窗口语义和滚动窗口类似,这里不再赘述。原创 2023-09-10 15:22:30 · 1081 阅读 · 4 评论 -
大数据Flink(七十五):SQL的Session 窗口(SESSION)
可以看到 Group Window Aggregation 中 Session 窗口的写法就是把 session window 的声明写在了 group by 子句中,即 session(row_time, interval '5' minute)。Session 时间窗口和滚动、滑动窗口不一样,其没有固定的持续时间,如果在定义的间隔期(Session Gap)内没有新的数据出现,则 Session 就会窗口关闭。:Session 窗口语义和滚动窗口类似,这里不再赘述。第一个参数为事件时间的时间戳;原创 2023-09-08 11:42:35 · 464 阅读 · 2 评论 -
大数据Flink(七十四):SQL的滑动窗口(HOP)
与滚动窗口功能一样,也有窗口大小的概念。不一样的地方在于,滑动窗口有另一个参数控制窗口计算的频率(滑动窗口滑动的步长)。因此,如果滑动的步长小于窗口大小,则滑动窗口之间每个窗口是可以重叠。这样,每 5 分钟会划分一次窗口,这个窗口包含的数据是过去 10 分钟内的数据,如下图所示。:比如计算同时在线的数据,要求结果的输出频率是 1 分钟一次,每次计算的数据是过去 5 分钟的数据(有的场景下用户可能在线,但是可能会 2 分钟不活跃,但是这也要算在同时在线数据中,所以取最近 5 分钟的数据就能计算进去了)原创 2023-09-06 23:40:27 · 1422 阅读 · 1 评论 -
大数据Flink(七十三):SQL的滚动窗口(TUMBLE)
(TUMBLE 算子):接收到上游算子发的一条一条的数据,然后将每一条数据按照时间戳划分到对应的窗口中(根据事件时间、处理时间的不同语义进行划分),上述案例为事件时间,事件时间中,滚动窗口算子接收到上游的 Watermark 大于窗口的结束时间时,则说明当前这一分钟的滚动窗口已经结束了,将窗口计算完的结果发往下游算子(一条一条发给下游。数据源算子(From Order):连接到 Kafka topic,数据源算子一直运行,实时的从 Order Kafka 中一条一条的读取数据,然后一条一条发送给下游的。原创 2023-09-05 23:06:28 · 1124 阅读 · 2 评论 -
大数据Flink(七十二):SQL窗口的概述和Over Windows
当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。按照时间区间聚合就是时间区间的一个滑动窗口,比如下面案例 1 小时的区间,最新输出的一条数据的 sum 聚合结果就是最近一小时数据的 amount 之和。按照行数聚合就是数据行数的一个滑动窗口,比如下面案例,最新输出的一条数据的 sum 聚合结果就是最近 5 行数据的 amount 之和。原创 2023-09-04 06:30:00 · 946 阅读 · 1 评论