我们知道,sql-client.sh可以提供给我们一个sql交互界面,让我们没执行一个sql,就可以看到执行结果,也可以交互式查询表的结果。
其实,我们也可以通过sql-client提交sql脚本,我们来看下。

./bin/sql-client.sh -h 对应的帮助参数:
1 | (base) [chenzuoli@chenzuolis-MacBook /Volumes/chenzuoli/Data/docker_img/flink-1.12.1]$./bin/sql-client.sh -h |
其中第一个参数-d,可以指定一些环境上的参数配置。

接下来,我们看看conf/sql-client-defaults.yaml文件,这个文件其实就是对应的配置文件。
创建测试用的数据文件:
1 | mkdir sql_test |
我们再来创建一个自己的配置文件,读取csv文件,然后select出来,新建文件conf/book-store.yaml
1 | vim conf/book-store.yaml |
通过指定配置文件的方式,来启动一个单独的session,执行相应的source-table和sink-table。
其中关于book-store.yaml配置文件,有几点需要注意:
a. tables.type等于source-table,表明这是数据源的配置信息;
b. tables.connector描述了详细的数据源信息,path是book-store.csv文件的完整路径,connector的type指定为filesystem,这跟我们写sql的时候指定的connector参数是一致的;
c. tables.format描述了文件内容,type为csv格式;
d. tables.schema描述了数据源表的表结构;
ed. type为view表示MyBookView是个视图(参考数据库的视图概念);
下面来看一下测试结果:
1 | ./bin/start-cluster.sh |
进入sql-client sql交互界面之后,可以看到环境已经配置好了,
1 | Flink SQL> show tables; |
可以看到两个表已经创建好了,我们可以看一下数据:
1 | select * from MyBookView; |
对不对,ok了,你要是yaml文件中写有sink-table那么,直接就提交了一个flink job到flink集群了,是不是达到了提交flink sql脚本文件的效果了。
好了,今天就这样,因为这几天在倒腾公司数据平台组开发的一个 流数据平台,发现他们是通过sql-client,提交到k8s上的,这一个提交任务方式,着实让我感到意外。因为之前翻译过一篇官方提供的flink submit job的文章,里面提到了四种提交方式:
- local cluster
- application mode
- per job mode
- session mode
我以为只有这四种呢,其实仔细看,sql-client提交sql的方式类似于session的方式,在整个session启动过程中,你可以不听地执行sql语句,session关闭,则任务关闭。
ok,下次见。
flink, yyds.
书山有路勤为径,学海无涯苦作舟。
欢迎关注我的微信公众号,比较喜欢分享知识,也喜欢宠物,所以做了这2个公众号:
喜欢宠物的朋友可以关注:【电巴克宠物Pets】
一起学习,一起进步。
