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

64次阅读

共计 2318 个字符,预计需要花费 6 分钟才能阅读完成。

对于初学者来说,学习 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/…)的改进版。这里所有的例子你都能够在 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/fli…。

把编译进去的 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 里的阐明文档都是英文的,能够翻译成中文,让更多人学习起来不便些。
当初每个教程都是文字模式,如果有谁能为每个教程都做个小视频,配合解说的话,我感觉成果会更好。
减少更多案例教程,当初尽管内容很多,但还有空间减少更多教程。

正文完
 0