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

2024-05-02 07:38

本文主要是介绍迄今为止最好用的Flink SQL教程:Flink SQL Cookbook on Zeppelin,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于初学者来说,学习 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 学习之旅吧。

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

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

例子1:Filtering Data

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

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

例子2:Lateral Table Join

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

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

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

  • 每个Note里的说明文档都是英文的,可以翻译成中文,让更多人学习起来方便些。

  • 现在每个教程都是文字形式,如果有谁能为每个教程都做个小视频,配合讲解的话,我觉得效果会更好。

  • 增加更多案例教程,现在虽然内容很多,但还有空间增加更多教程。

有兴趣想为这个教程做贡献的同学请发邮件到这个地址联系我:jeffzhang.zjf@alibaba-inc.com,  对 Flink on Zeppelin 感兴趣的可以加入钉钉群:32803524

Flink on Zeppelin 这个项目是从 Flink 1.10 开始,目前为止已经支持了 3 个 Flink  的大版本。接下来我们还有很多有挑战的事情要去做,比如 Application Mode 的支持、K8s 的支持、调度的支持等等。Flink on Zeppelin 是我们做的工作的其中一部分,其他开源引擎的支持我们也会去做,我们的目标是做一个用户体验最好的基于开源组件的数据开发平台,有兴趣的同学可以看看下面的招聘详情,欢迎加入我们的数据开发团队。

我们的主要职责是为阿里云上的各大中小企业客户提供大数据和 AI 的基础服务。你的工作将是围绕  Spark、Flink、Hadoop、Tensorflow、PyTorch 等开源组件构建一个易用的,企业级的大数据和 AI 开放平台。不仅有技术的挑战,也需要做产品的激情。我们采用大量的开源技术(Hadoop、Flink、Spark、Zeppelin、 Kubernetes、Tensorflow、Pytorch 等等),并且致力于回馈到开源社区。

如果你对开源,大数据或者 AI 感兴趣,这里有最好的土壤。拥有在 Apache Flink、 Apache Kafka、Apache Zeppelin、Apache Beam、Apache Druid、Apache HBase 等诸多开源领域的 Committer & PMC。感兴趣的同学请发简历到:jeffzhang.zjf@alibaba-inc.com。


Flink 从入门到精通 系列文章
基于 Apache Flink 的实时监控告警系统关于数据中台的深度思考与总结(干干货)日志收集Agent,阴暗潮湿的地底世界

公众号(zhisheng)里回复 面经、ClickHouse、ES、Flink、 Spring、Java、Kafka、监控 等关键字可以查看更多关键字对应的文章。
点个赞+在看,少个 bug ????

这篇关于迄今为止最好用的Flink SQL教程:Flink SQL Cookbook on Zeppelin的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953729

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA