这是我参与【第四届青训营】笔记创作活动的第3天
一、本堂课重点内容
1.了解实时计算和批式计算的本质区别
2.了解实时计算中的核心功能:Watermark机制、Window机制
3.了解三大基本窗口类型的定义、使用以及核心原理
4.了解窗口机制中的最核心的优化及其原理
二、知识点详细介绍
2.1 流式计算与批式计算对比
2.2 处理时间窗口与事件时间窗口
1)处理时间窗口
数据实时流动,实时计算,窗口结束直接发送结果,不需要周期调度任务
2) 事件时间窗口
数据实时进入到真实事件发生的窗口中进行计算,可以有效的处理数据延迟和乱序
3)处理时间与事件时间对比
2.3 Watermark
1)定义:表示系统认为的当前真实的事件时间
2)产生代码(SQL)
`:CREATE TABLE Orders(
user BIGINT,
product STRING,
order_time TIMESTAMP(3),
WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND
)WITH(...);
`
2.4 Window-基本功能
1)典型的Window:Tumble Window(滚动窗口)、Sliding Window(滑动窗口)、Session Window(会话窗口)
2)窗口对比:
2.5 迟到数据
1)产生条件:在事件时间下才会有迟到的数据
2)处理方式:丢弃
2.6 增量计算:
每条数据到来直接进行计算,window只存储计算结果,eg:计算sum,状态中只需要存储sum的结果,不需要保存每条数据。
2.7 全量计算:
每条数据到来,会存储到window的state中,等window触发计算时候将所有数据拿出来一起计算
三、实践练习例子
1)计算抖音的日活曲线
` SELECT
SUM(partial_cnt) as dau
TUMBLE_START(event_time,INTERVAL '1' DAY) as wstart,
LOCALTIMESTAMP as current_ts
FROM (
SELECT
COUNT(DISTINCT uid) as partial_cnt,
TUMBLE_ROWTIME(event_time,INTERVAL '1' DAY) as event_time
FROM user_activity
GROUP BY
TUMBLE(event_time, INTERVAL, '1' DAY),
MOD(uid,10000)
)
GROUP BY TUMBLE(event_time,INTERVAL '1' DAY)`
2)计算大数据任务的资源使用
` SELECT
application_id
SUM(cpu_usage) as cpu_total
SUM(memory_usage) as memory_total,
FROM resource_usage
GROUP BY
application_id,
SESSION(event_time,INTERVAL '10' MINUTE)`
四、课后个人总结
本章节学习中window的高级优化和会话窗口知识点较为不易掌握,需要较为用功学习,而会话窗口作为比较特殊的策略,它基于时间间隔来划分窗口,因而在学习中需要注重判断基于时间,其中,上述讲述中的window中各个窗口对比具有一定的混淆性,需要注重区别和掌握。