迄今为止最好用的Flink SQL教程:Flink SQL Cookbook on Zeppelin

简介: 无需写任何代码,只要照着这篇文章轻松几步就能跑各种类型的 Flink SQL 语句。

对于初学者来说,学习 Flink 可能不是一件容易的事情。看文档是一种学习,更重要的是实践起来。但对于一个初学者来说要把一个 Flink SQL 跑起来还真不容易,要搭各种环境,真心累。很幸运的是,Flink 生态圈里有这样一款工具可以帮助你更有效率地学习 Flink:Zeppelin。本文不讲 Flink on Zeppelin 相关的内容,更关注于如何用 Zeppelin 来学习 Flink。

给大家介绍一个可能是迄今为止用户体验最好的 Flink SQL 教程:Flink Sql Cookbook on Zeppelin。你无需写任何代码,只要照着这篇文章轻松几步就能跑各种类型的 Flink SQL 语句。废话不多说,我们开始吧。

这个教程其实就是 ververica 的 flink-sql-cookbook (https://github.com/ververica/flink-sql-cookbook/ )的改进版。这里所有的例子你都可以在 Zeppelin 里跑起来,而且不用写任何代码。我已经把里面的例子都移植到了 Zeppelin。

准备环境

Step 1

git clone https://github.com/zjffdu/flink-sql-cookbook-on-zeppelin.git

这个 repo 里是一些 Zeppelin notebook,里面都是 flink-sql-cookbook 里的例子。

Step 2

下载 Flink 1.12.1 (我没有试过其他版本的 Flink,有兴趣的同学可以试下),并解压。

Step 3

编译 Flink faker,地址:https://github.com/knaufk/flink-faker/

把编译出来的 flink-faker-0.2.0.jar 拷贝到 Flink 的 lib 目录下。这个 Flink faker 是一个特制的 table source,用来生成测试数据。我们的很多例子里都会用到这个 Flink faker。

Step 4

运行下面的命令启动最新版本的 Zeppelin。

docker run -p 8081:8081 -p 8080:8080 --rm -v $PWD/logs:/logs -v 
/Users/jzhang/github/flink-sql-cookbook-on-zeppelin:/notebook -v 
/Users/jzhang/Java/lib/flink-1.12.1:/flink -e ZEPPELIN_LOG_DIR='/logs' -e ZEPPELIN_NOTEBOOK_DIR='/notebook' --name zeppelin apache/zeppelin:0.9.0

需要注意的是这里的 2 个目录:

  1. /Users/jzhang/github/flink-sql-cookbook-on-zeppelin(这是Step 1 里clone 下来的 repo 目录)
  2. /Users/jzhang/Java/lib/flink-1.12.1 (这是 Step 2 下载下来并解压之后的 Flink 目录)

这两个目录是我自己本地目录,请替换成你自己的目录。

体验 Flink Sql Cookbook 教程

好了,现在教程环境已经 ready 了,浏览器打开 http://localhost:8080 开始你的 Flink Sql 学习之旅吧。

image.png

这是 Zeppelin 的 UI,里面已经有了一个文件夹 Flink Sql Cookbook,内含所有 Flink Sql 教程。首先我们需要配置下 Flink 解释器,点击右上角的菜单,选择 interpreter,找到 Flink interpreter,修改其中的 FLINK_HOME 为 /flink (也就是上面 docker 命令里我们挂载的 flink),然后点击重启 interpreter。

image.png

如果你碰到如下的错误的话,请往下拉,看 Depenendies 里是不是有个用户名在那里,如果是的话,把它删掉再 save(这是 Zeppelin 的一个前端 bug,社区正在 fix)

image.png

image.png

例子1:Filtering Data

接下来我们就选择其中里的 Foundations/04 Filtering Data 来体验下。

image.png

这里有 2 个段落(Paragraph),第一个段落是创建一个 server_logs 表,第二个段落是用 select where 语句去过滤这张表里的数据,并按时间排序取最新的 10 条数据。下图就是执行完 select 语句的效果,大家可以看到里面的数据每隔 3 秒钟会更新下,并且 status_code 的确永远都是 401 或者 403,验证了我们的 SQL 逻辑。右上角还有一个 FLINK JOB 的链接,点进去之后你还能看个这个 Job 的详细信息。

1.gif

例子2:Lateral Table Join

接下来我们来看一个 Lateral Table Join 的例子,这是 Flink SQL 里的其中一种 Join 类型。初学者看到这个名词第一感觉会有点懵逼,上网查完资料之后也是似懂非懂的感觉,如果这时候有个比较直观的例子给你,应该会对你的理解非常有帮助。这个教程里就自带了这么一个例子,打开 Joins/06 Lateral Table Join,运行之后,你就能看到如下的效果。

2.gif

这里我就举这 2 个例子,里面还有很多很多有用的例子(如下图所示),大家可以自己去学习,可以尝试修改下 SQL 再运行看看结果有什么不一样。

image.png

以上是我花了周末 2 天时间整理出来的学习资料,希望对大家学习 Flink 有所帮助,共同进步。不过这个教程还有改进的空间,有兴趣的同学可以一起来改进,目前还有如下 3 个点可以改进:

每个Note里的说明文档都是英文的,可以翻译成中文,让更多人学习起来方便些。
现在每个教程都是文字形式,如果有谁能为每个教程都做个小视频,配合讲解的话,我觉得效果会更好。
增加更多案例教程,现在虽然内容很多,但还有空间增加更多教程。

社区二维码.jpg

相关实践学习
基于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集成,实现可扩展流处理
|
5月前
|
SQL 消息中间件 Kafka
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是 Apache Flink 提供的 SQL 引擎,支持流批一体处理,统一操作流数据与批数据,具备高性能、低延迟、丰富数据源支持及标准 SQL 兼容性,适用于实时与离线数据分析。
917 1
|
11月前
|
SQL 大数据 数据处理
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是为应对传统数据处理框架中流批分离的问题而诞生的,它融合了SQL的简洁性和Flink的强大流批处理能力,降低了大数据处理门槛。其核心工作原理包括生成逻辑执行计划、查询优化和构建算子树,确保高效执行。Flink SQL 支持过滤、投影、聚合、连接和窗口等常用算子,实现了流批一体处理,极大提高了开发效率和代码复用性。通过统一的API和语法,Flink SQL 能够灵活应对实时和离线数据分析场景,为企业提供强大的数据处理能力。
1997 27
|
SQL 存储 缓存
Flink SQL Deduplication 去重以及如何获取最新状态操作
Flink SQL Deduplication 是一种高效的数据去重功能,支持多种数据类型和灵活的配置选项。它通过哈希表、时间窗口和状态管理等技术实现去重,适用于流处理和批处理场景。本文介绍了其特性、原理、实际案例及源码分析,帮助读者更好地理解和应用这一功能。
894 14
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
562 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
377 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
272 6
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1208 3

相关产品

  • 实时计算 Flink版