Flink SQL _ Table 介绍与实战 | 学习笔记(三)

简介: 快速学习 Flink SQL _ Table 介绍与实战

开发者学堂课程【开源 Flink 极客训练营Flink SQL _ Table 介绍与实战】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/760/detail/13341


Flink SQL _ Table 介绍与实战


提交Query

统计每小时的成交量就是每小时共有多少""buy”的用户行为。因此会需要用到TUMBLE窗口函数,按照一小时切窗。然后每个窗口分别统计“buy”的个数,这可以通过先过滤出""buy"的数据,然后COUNT(*)实现。

INSERT INTO buy_cnt_per_hour

SELECT HOUR (TUMBLE_START(ts,INTERVAL '1'HOUR)),COUNT(*)

FROM user_behavior

HERE behavior = " buy"

GROUP BY TUMBLE(ts, INTERVAL"1"HOUR);

ts事件时间,时间属性字段,开窗大小一小时

使用HOUR内置函数,从一个TIMESTAMP列中提取出一天中第几个小时的值。使用了INSERT TNTO将query的结果持续不断地插入到上文定义的es结果表中(可以将es结果表理解成query 的物化视图)。另外可以阅读该文档了解更多关于窗口聚合的内容:https://ci.apache.org/projects/flink/flink-docs-release-

1.11/dev/table/sql/queries.htmIifgroup-windows

在Flink SQL CLI中运行上述查询后,在Flink Web UI中就能看到提交的任务,该任务是一个流式任务,因此会一直运行。

图片39.png

成功提交,查看运行作业,有两个节点

图片40.png

使用Kibana可视化结果

通过Docker Compose启动了Kibana容器,可以通过http://ocalhost:5601访问Kibana.

需要先配置一个index pattern.点击左侧工具栏的"Management",就能找到"Index Patterns".点击"Create Index Pattern",

图片41.png

然后通过输入完整的索引名"buy. cnt per hour"创建index pattern.创建完成后,Kibana 就知道索引后,可以开始探索数据了。

先点击左侧工具栏的"Discovery"按钮,Kibang 就会列出刚刚创建的索引中的内容。

5601本地端口访问界面,刚进入是空的,无数据,通过Index Patterns,点击create index pattern

选择索引名 buy_cnt_per_hour,点击next,图片42.png

创建index pattern完成后,才能在Kibana中去做Discovery,可视化等操作,

图片43.png

Discovery中查看写入的数据,

图片44.png

创建一个Dashboard用来展示各个可视化的视图。点击页面左侧的"Dashboard", 创建一个名为"用户

行为日志分析"的Dashboard.然后点击"Create New"创建一个新的视图,选择"Area" 面积图,选择

" buy_cnt_per_hour"索引,按照如下截图中的配置(左侧)画出成交量面积图,并保存为“每小时成交量"。

点击左侧Dashboard,创建新的Dashboard,点击save,创建名字,

图片45.png

进入edit界面,添加可视化图

图片46.png

文本框,表述Dashboard

图片47.png

做每小时成交量图,在edit中选择Area面积图,选择索引

Y轴是购买量Max,X轴小时,选择hour_of_day

点击播放键

图片48.png

凌晨有波谷,符合常识,保存到Dashboard中

统计一天每10分钟 累计独立用户数

另一个可视化是统计-天中每一刻的累计独立用户数(uv) ,即每一刻的uv数都代表从0点到当前时刻为止的总计uv数,因此该曲线肯定是单调递增的。

首先在SQL CLI中创建-个Elasticsearch表,用于存储结果汇总数据。主要字段有:日期时间和累积uv数。将日期时间作为Elasticsearch中的document id,便于更新该日期时间的uv值。

CREATE TABLE cumulative. _ uv (

date_ str STRING,

time. str STRING,

uv BIGINT,

PRIMARY KEY (date_ str, tine str) NOT ENFORCED

) WITH (

"connector" = "elasticsearch-7",

"hosts" = "http://elasticsearch:9200",

"index" = " cumulative. uv"

);

为了实现该曲线,可以先通过OVER WINDOW计算出每条数据的当前分钟,以及当前累计uv (从0点开始到当前

行为止的独立用户数)。uv 的统计我们通过内置的COUNT(DISTINCT user_ 1d) 来完成,Flink SQL内部对COUNT

DISTINCT做了非常多的优化,因此可以放心使用。

为了实现该曲线,先抽取出日期和时间字段,使用DATE FORMAT抽取出基本的日期与时间,再用SUBSTR 和

字符串连接函数11将时间修正到10分钟级别,如: 12:10. 12:28. 其次,在外层查询上基于日期分组,求当前

最大的时间,和UV,写入到Elasticsearch的索引中。UV的统计通过内置的COUNT(DISTINCT user. id)来完成,Fink SQL内部对COUNT DISTINCT做了非常多的优化,因此可以放心使用。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
4月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
简介:本文整理自阿里云高级技术专家李麟在Flink Forward Asia 2025新加坡站的分享,介绍了Flink 2.1 SQL在实时数据处理与AI融合方面的关键进展,包括AI函数集成、Join优化及未来发展方向,助力构建高效实时AI管道。
845 43
|
4月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
本文整理自阿里云的高级技术专家、Apache Flink PMC 成员李麟老师在 Flink Forward Asia 2025 新加坡[1]站 —— 实时 AI 专场中的分享。将带来关于 Flink 2.1 版本中 SQL 在实时数据处理和 AI 方面进展的话题。
308 0
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
|
3月前
|
算法 数据挖掘 数据库
通过 SQL 快速使用 OceanBase 向量检索学习笔记
通过 SQL 快速使用 OceanBase 向量检索学习笔记
|
9月前
|
SQL 运维 监控
SQL查询太慢?实战讲解YashanDB SQL调优思路
本文是Meetup第十期“调优实战专场”的第二篇技术文章,上一篇《高效查询秘诀,解码YashanDB优化器分组查询优化手段》中,我们揭秘了YashanDB分组查询优化秘诀,本文将通过一个案例,助你快速上手YashanDB慢日志功能,精准定位“慢SQL”后进行优化。
|
3月前
|
SQL 数据库
SQL 学习笔记 - 多表关系与多表查询
数据库多表关系包括一对多、多对多和一对一,常用外键关联。多表查询方式有隐式/显式内连接、外连接、子查询等,支持别名和条件筛选。子查询分为标量、列、行、表子查询,常用于复杂查询场景。
|
5月前
|
SQL 消息中间件 Kafka
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是 Apache Flink 提供的 SQL 引擎,支持流批一体处理,统一操作流数据与批数据,具备高性能、低延迟、丰富数据源支持及标准 SQL 兼容性,适用于实时与离线数据分析。
917 1
|
10月前
|
SQL 存储 API
Flink Materialized Table:构建流批一体 ETL
本文整理自阿里云智能集团 Apache Flink Committer 刘大龙老师在2024FFA流批一体论坛的分享,涵盖三部分内容:数据工程师用户故事、Materialized Table 构建流批一体 ETL 及 Demo。文章通过案例分析传统 Lambda 架构的挑战,介绍了 Materialized Table 如何简化流批处理,提供统一 API 和声明式 ETL,实现高效的数据处理和维护。最后展示了基于 Flink 和 Paimon 的实际演示,帮助用户更好地理解和应用这一技术。
849 7
Flink Materialized Table:构建流批一体 ETL
|
11月前
|
SQL 大数据 数据处理
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是为应对传统数据处理框架中流批分离的问题而诞生的,它融合了SQL的简洁性和Flink的强大流批处理能力,降低了大数据处理门槛。其核心工作原理包括生成逻辑执行计划、查询优化和构建算子树,确保高效执行。Flink SQL 支持过滤、投影、聚合、连接和窗口等常用算子,实现了流批一体处理,极大提高了开发效率和代码复用性。通过统一的API和语法,Flink SQL 能够灵活应对实时和离线数据分析场景,为企业提供强大的数据处理能力。
1997 27
|
9月前
|
SQL 存储 API
Flink Materialized Table:构建流批一体 ETL
Flink Materialized Table:构建流批一体 ETL
186 3
|
SQL 存储 缓存
Flink SQL Deduplication 去重以及如何获取最新状态操作
Flink SQL Deduplication 是一种高效的数据去重功能,支持多种数据类型和灵活的配置选项。它通过哈希表、时间窗口和状态管理等技术实现去重,适用于流处理和批处理场景。本文介绍了其特性、原理、实际案例及源码分析,帮助读者更好地理解和应用这一功能。
894 14

热门文章

最新文章