Flink sql-client.sh使用

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:后面接初始化文件,注释是 -- ,不是#。初始化文件里不要有查询和插入语句,支持下面的语句。

Flink sql-client.sh使用_第1张图片

 -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 ; }+
END;
在1.15.0之后语法:
EXECUTE STATEMENT SET 
BEGIN
  -- one or more INSERT INTO statements
  { INSERT INTO|OVERWRITE ; }+
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。可以去查看,如图:

 

 

你可能感兴趣的:(flink,flink,scala,java)