00:00
接下来我们再来介绍一个flink CQ提供的非常有趣的功能,那就是CQ客户端啊,我们知道有了table API和flink CQ之后,我们就可以直接使用CQ去嵌到代码当中去进行了,那这样的话我们进行流的过程也可以使用非常熟悉的CQ语法去进行处理计算。这已经对于。传统的数据库管理员DBA啊,或者是我们对于关系数据库比较了解的程序员来说非常的友好,但是呢,整个这个过程我们还是依赖于Java或者skyla代码,我们写完代码之后还是需要进行打包,然后提交到flink集群上去进行运行的,整个这个过程当中,我们还是需要对Java比较熟悉,需要对整个flink比较熟悉。这无疑就是被flink的使用普及设置了一个门槛啊,那很多程序员或者说是数据库的管理员,他可能最熟悉的是CQ,他对于这些编程语言和运维方面的内容集群的配置并不是特别的关心,也不是特别的熟悉,那这种情况怎么样能够把门槛降低,直接写CQ就可以提交一个flink作业流处理,让它进行运行呢?
01:25
那考虑到这些,Flink为我们直接提供了一个小工具来进行flink CQ程序的编写、测试和提交,这个小工具就叫做CQ客户端啊,那这个客户端呢,其实是给我们提供了一个命令行的交互界面,就是所谓的啊c Li,我们可以在里边,就像进入MYSQL的命令行交互界面一样,然后你直接在在上面去敲CQ就可以了。不需要写任何的一行Java或者SKY其他的这些代码,也不用去管flink相关的编写提交的这些集群配置方面的问题。
02:06
所以对于我们来讲啊,特别是对于熟悉CQ的数据库的管理人员来讲,这是一个非常友好,可以非常快进行。Flink开发的一个小工具啊,那它的使用其实也非常简单,就是直接我们首先啊,应该是要先启动本地的link集群啊,因为接下来我们使用。CQ客户端的时候,本质上其实就是在直接集提交当前的fli作业啊,那所以呃认应该还是要有一个集群的,然后接下来呢,启动当前的CQ客户端就可以了,这个启动的脚本就是叫做CQ client.sh。接下来我们可以来具体看一下,我们知道在当前的flink目录下边有一个并目录,诶,那么在并目录下边呢。
03:01
有很多的运行脚本,其中就包含了,呃,当然了,最常用的当然直接就是flink,我们flink run去提交作业啊,啊,另外还有比方说像雅安session啊,Task manager啊,Luster啊,这些都在下边,那另外现在我们要介绍的是CQ client。好,那我们直接启动的时候也非常简单,就是直接运行它就可以了。也不需要任何的参数。我们直接可以把它启动起来,我们可以看到有一个大大的松鼠logo啊,然后下面写着flinkq啊,当然这里还是一个better版啊,那所以未来它可能也会不停的完善,应该会更加的好用,那在这里面我们进来之后看到flink CQ前面有一个这个啊,然后加一个。朝右的小监括号,接下来在这里我们就可以直接去写SQL,在这个命令行里面,就好像我们进入到MYSQL的控制管理。控制管理页面是一样的命令行页面啊。
04:02
那所以呃,在这里边我们可以做各种各样环境的一些配置啊,另外呢,也可以直接select from每张表啊,当然了,这个前提就是说我们需要先去创建表对吧?所以那同样你也应该先去执行一些d create table啊,那连接表的话,我们可以连接到外部文件,可以连接到外部的卡夫卡啊,一些其他的数据库,这些都是可以去在这里面进行操作。本质上其实就是把我们在代码当中书写的这些CQ全部运行在这里。在一个CQ命令行的。界面里面直接去敲一遍去运行就可以了,我们不需要关心各种各样的环境配置和其他的一些设置。当然这里边首先还应该考虑一下当前的运行式环境啊,这里边呢,运行式环境是通过所谓的运行模式去进行设置的啊,这里边呢,有两个选项,一个是流处理,那另外一个是批处理,如果说我们不做任何处理的话,默认其实就是流处理,所以一进去之后我们什么都不干,直接去提交也是可以的啊,那这里面要设置的时候呢,是set,就相当于配置这个CQ里边的某一个某一个配置项啊一样,Set execution runtime mode等于streaming啊,那或者等于Bach,那就是批处理。
05:28
另外还有一个是客户端的执行结果模式,有tablelo和table AU。这三种方式,那table模式就是最普通的表处理模式啊,就是如果说我们查询一张表的话,那得到的结果就是以逗号分割每个字段。如果是t log的话,很明显那就是前面会加上加加减减的这个前缀啊,知道每一行到底是做的是插入操作还是删除操作,而对于这个呃,Table AU呢,就是经典的可视化的模式。
06:05
类似于我们在MYSQL里边去SELECT1张表的时候得到的结果,那就是用这个虚线虚线框啊框起来的这样的一个真正看起来像一张表一样的状态。这个就是跟传统的MYSQL或者其他的一些数据库的命令行界面是完全一样的,这里我们就不去多做介绍,那另外当然也可以有一些可选的设置了,比如说。空闲状态的生存时间TTL按照我们在这里也是直接一个set就可搞定了。这都是非常熟悉的CQ操作,那接下来呢,执行CQ啊,我们可以create table,比方说叫一个,然后对应的字写在这里,呃,还有一个time Sam字段啊,这个因为是关键字,所以加了反引号,另外with这里创建了一个连接器表,从文件系统里边读取even词典CSV这个文件,然后得到当前的一张表,创建出来之后,诶,那接下来我们另外呃,这里还可以创建一个结果表了啊,最后输出的这个结果写到哪呢?比方说我直接connector,等于print,这是一个连接器表,直接在控制台打印输出啊,那把这个都创建好之后,我们就可以直接去做一个。
07:17
执行一条CQ了,诶这里的话我直接可以放在一起,因为我们完整去写的话,那应该是首先select啊,做这样的一个,呃,得到这个结果,然后再去写入对应的这个result,我们可以把它合并,合并的话就是insert into table,然后select user count c。相当于就把我们之前代码里边所能写的所有的CQ在这里边直接运行一遍就完事了。所以这个过程就是把flink的知识相当于我们都可以抛开,直接去运行CQ,处理CQ。所以呃,未来可能在。
08:00
很多应用场景下,啊,呃,可能这种方式c client的方式会更加的受欢迎,因为它特别的简单,但是我们需要注意的是,每次运行一下这样的一句CQ的话,本质上就相当于是在本地的。集群上提交了一个流处理作业啊,所以我们可能就不能,尽管这个看起来写非常的容易,非非常的方便,但是呢,可能就要稍微的仔细一点,因为这里边的任何一个错误的提交都会导致占用我们的集群资源啊,所以目前这种模式可能更多的是用来测试,或者是用来做一些练习。如果我们希望得到更加稳定执行的这样的一些作业的话,那最好还是使用提交,呃,把我们的这个代码写完,然后进行打包,然后提交到集群上这种方式。这是关于q client一个简单介绍。
我来说两句