SQL Client旨在提供一种简单的方式来编写、调试表程序,并向Flink集群提交表程序,而不需要一行Java或Scala代码。SQL Client CLI允许在命令行上检索和可视化运行的分布式应用程序的实时结果。
1. 简单使用
使用简单,即在里面直接写sql即可,比如:
./bin/sql-client.sh 启动client,然后就可以进行sql的编写了,如下:
--实现MySQL?CDC写往另外一个MySQL表
CREATE TABLE a1 ( ? ? ?aid INT, ? ? ?subid INT, ?? ? name STRING ? ? ?) WITH ( ? ? ?'connector' = 'mysql-cdc', ? ? ?'hostname' = 'xxx', ? ? ?'port' = '3306', ? ? ?'username' = 'xxx', ? ? ?'password' = 'xxx', ? ? ?'database-name' = 'test', ? ? ?'table-name' = 'a1', ?? ? 'scan.incremental.snapshot.enabled' = 'false' ?? ? ); ?? ?? CREATE TABLE a2 ( ? ? ?aid INT, ? ? ?subid INT, ?? ? name STRING ? PRIMARY KEY (aid) NOT ENFORCED ) WITH ( ? ?'connector' = 'jdbc', ? ?'url' = 'jdbc:mysql://xxx:3306/test', ? ?'table-name' = 'a2', ? ?'username' = 'xxx', ? ?'password' = 'xxx' );
insert into a2 select * from a1;
对于配置可以使用set设置,即 SET 'key' = 'value';
2. 支持的参数
sql-client.sh 支持一些参数,可以使用 --help查看。这里讲解最重要的2个参数,即 -i 和 -f。
-i:后面接初始化文件,注释是 -- ,不是#。初始化文件里不要有查询和插入语句,支持下面的语句。
?-f:就是接sql文件。即不用进行交互式查询,可以接 -f xxx.sql 来执行xxx.sql文件。这里注意:xxx.sql文件里的提交语句会被分开成一个个job,如果想要在一个job里提交就要注意写法,即:
在1.15.0以前语法: BEGIN STATEMENT SET; ? -- one or more INSERT INTO statements ? { INSERT INTO|OVERWRITE <select_statement>; }+ END; 在1.15.0之后语法: EXECUTE STATEMENT SET? BEGIN ? -- one or more INSERT INTO statements ? { INSERT INTO|OVERWRITE <select_statement>; }+ END;
3. 提交模式
默认sql-client.sh会提交到standalone集群,如果要提交到yarn,则可以配置初始化文件,比如init.sql,配置set 'execution.target' = 'yarn-per-job'; 然后执行 ./bin/sql-client.sh -i init.sql。则可以以yarn-per-job的方式提交到yarn上。不能设置yarn-application的方式,因为DefaultExecutorServiceLoader里没有相应的实现,SPI里只实现了YarnJobClusterExecutorFactory 和 YarnSessionClusterExecutorFactory。可以去查看,如图:
?
?
|