一、flink sql-client 直接启动
根据官网下载好flink后,解压完直接进入bin目录,执行sql-client.sh.启动是直接启动了。
./bin/sql-client.sh
出现如下
迫不及待,直接执行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相关的日志。 在日志中记录了本次错误的原因
显然,flink与spark有个显著不同,需要启动本地集群才能正常运行application。于是进入bin启动cluster。
./bin/start-cluster.sh
启动后,会出现
此后再执行sql-client即可正常执行sql.
二、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.
输出如下
变更日志模式
变更日志模式(changelog mode)不会物化结果。可视化展示由插入(+)和撤销(-)组成的持续查询结果流。
Flink SQL> SET sql-client.execution.result-mode = changelog;
[INFO] Session property has been set.
Tableau模式
Tableau模式(tableau mode)更接近传统的数据库,会将执行的结果以制表的形式直接打在屏幕之上。具体显示的内容取决于作业执行模式(execution.type)
Flink SQL> SET sql-client.execution.result-mode = tableau;
[INFO] Session property has been set.
当在流式查询上使用这种模式时,Flink 会将结果持续的打印在当前的控制台上。如果流式查询的输入是有限数据集,那么 Flink 在处理完所有的输入数据之后,作业会自动停止,同时控制台上的打印也会自动停止。如果你想提前结束这个查询,那么可以直接使用 CTRL-C 按键,这个会停止作业同时停止在控制台上的打印。