flink sql-client 菜鸟记录

3,266 阅读2分钟

一、flink sql-client 直接启动

根据官网下载好flink后,解压完直接进入bin目录,执行sql-client.sh.启动是直接启动了。

./bin/sql-client.sh

出现如下

image.png

迫不及待,直接执行sql

select * from (select 1 as a union select 2 as a);

程序卡了有一会,心说,第一次启动flink,让子弹飞一会。耐心等待一把,没成想等到的是ERROR.如下

[ERROR] Could not execute SQL statement. Reason:
java.net.ConnectException: Connection refused

于是退出当前目录,寻找log相关的目录,寻找详细的错误的日志。于是在

/Users/chenqi/project/chenqi/flink/flink-1.13.1/log

下找到了sql-client相关的日志。 在日志中记录了本次错误的原因

image.png

显然,flink与spark有个显著不同,需要启动本地集群才能正常运行application。于是进入bin启动cluster。

./bin/start-cluster.sh

启动后,会出现

image.png

此后再执行sql-client即可正常执行sql.

image.png

二、flink client知识点

启动客户端

网上有很多的教程是使用

./bin/sql-client.sh embedded

来进行启动的。实际上目前仅支持嵌入式模式,现在默认模式就是嵌入式。所以这种写法与

./bin/sql-client.sh 

这种写法本质上是一样的。

输出模式

CLI 为维护和可视化结果提供三种模式。其结果输出使用参数"execution.result-mode"进行设置。

表格模式

表格模式(table mode)在内存中物化结果,并将结果用规则的分页表格的形式可视化展示出来。执行如下命令启用:

Flink SQL> SET sql-client.execution.result-mode = table;
[INFO] Session property has been set.

输出如下

image.png

变更日志模式

变更日志模式(changelog mode)不会物化结果。可视化展示由插入(+)和撤销(-)组成的持续查询结果流。

Flink SQL> SET sql-client.execution.result-mode = changelog;
[INFO] Session property has been set.

image.png

Tableau模式

Tableau模式(tableau mode)更接近传统的数据库,会将执行的结果以制表的形式直接打在屏幕之上。具体显示的内容取决于作业执行模式(execution.type)

Flink SQL> SET sql-client.execution.result-mode = tableau;
[INFO] Session property has been set.

image.png

当在流式查询上使用这种模式时,Flink 会将结果持续的打印在当前的控制台上。如果流式查询的输入是有限数据集,那么 Flink 在处理完所有的输入数据之后,作业会自动停止,同时控制台上的打印也会自动停止。如果你想提前结束这个查询,那么可以直接使用 CTRL-C 按键,这个会停止作业同时停止在控制台上的打印。