实时数仓入门训练营:实时计算 Flink 版 SQL 实践

本文介绍了实时计算Flink版SQL的特点和应用场景,包括其流批统一的特性、自动优化功能以及广泛应用于数据集成、实时报表、实时风控等场景。文章详细讲解了SQL的基本操作、维表Lookup Join、窗口聚合(Tumble Window、Session Window、Hop Window、Cumulate Window)以及Group Aggregation,通过实例展示了Flink SQL在实时数仓中的应用。
摘要由CSDN通过智能技术生成
内容简要:
一、实时计算Flink版SQL简介
二、实时计算Flink版SQL上手示例
三、开发常见问题和解法

实时计算Flink版SQL简介

(一)关于实时计算Flink版SQL

实时计算Flink版选择了SQL这种声明式语言作为顶层API,比较稳定,也方便用户使用。Flink SQL具备流批统一的特性,给用户统一的开发体验,并且语义一致。另外,Flink SQL能够自动优化,包括屏蔽流计算里面State的复杂性,也提供了自动优化的Plan,并且还集成了AutoPilot自动调优的功能。Flink SQL的应用场景也比较广泛,包括数据集成、实时报表、实时风控,还有在线机器学习等场景。

(二)基本操作

在基本操作上,可以看到SQL的语法和标准SQL非常类似。示例中包括了基本的SELECT、FILTER操作。,可以使用内置函数,如日期的格式化,也可以使用自定义函数,比如示例中的汇率转换就是一个用户自定义函数,在平台上注册后就可以直接使用。

(三)维表 Lookup Join

在实际的数据处理过程中,维表的Lookup Join也是一个比较常见的例子。

这里展示的是一个维表INNER JOIN示例。

例子中显示的SOURCE表是一个实时变化的订单信息表,它通过INNER JOIN去关联维表信息,这里标黄高亮的就是维表JOIN的语法,可以看到它和传统的批处理有一个写法上的差异,多了FOR SYSTEM_TIME AS OF这个子句来标明它是一个维表JOIN的操作。SOURCE表每来一条订单消息,它都会触发维表算子,去做一次对维表信息的查询,所以把它叫做一个Lookup Join。

(四)Window Aggregation

Window Aggregation(窗口聚合)操作也是常见的操作,Flink SQL中内置支持了几种常用的Window类型,比如Tumble Window,Session Window,Hop Window,还有新引入的Cumulate Window。

Tumble

Tumble Window可以理解成固定大小的时间窗口,也叫滚窗,比如说5分钟、10分钟或者1个小时的固定间隔的窗口,窗口之间没有重叠。

Session

Session Window(会话窗口) 定义了一个连续事件的范围,窗口定义中的一个参数叫做Session Gap,表示两条数据的间隔如果超过定义的时长,那么前一个Window就结束了,同时生成了一个新的窗口。

Hop

Hop Window不同于滚动窗口的窗口不重叠,滑动窗口的窗口之间可以重叠。滑动窗口有两个参数:size 和 slide。size 为窗口的大小,slide 为每次滑动的步长。如果slide < size,则窗口会重叠,同一条数据可能会被分配到多个窗口;如果 slide = size,则等同于 Tumble Window。如果 slide > size,窗口之间没有重叠且有间隙。

Cumulate

Cumulate Window(累积窗口),是Flink社区1.13版本里新引入的,可以对比 Hop Window来理解,区别是从Window Start开始不断去累积。示例中Window 1、Window 2、Window 3是在不断地增长的。它有一个最大的窗口长度,比如我们定义Window Size是一天,然后Step步长是1个小时,那么它会在一天中的每个小时产生累积到当前小时的聚合结果。

看一个具体的Window聚合处理示例。

如上图所示,比如说需要进行每5分钟单个用户的点击数统计。

源数据是用户的点击日志,我们期望算出每5分钟单个用户的点击总数, SQL 中使用的是社区最新的 WindowTVF语法,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值