1.Could not execute SQL statement. Reason:
org.apache.flink.sql.parser.impl.ParseException: Encountered "user" at line 1, column 14.
在Flink客户端中执行sql语句:
create table user(
id int ,
name string
)WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://localhost:3306/test_db',
'username' = 'root',
'password' = '000000',
'table-name' = 'user'
);
报错:
[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.sql.parser.impl.ParseException: Encountered "user" at line 1, column 14.
Was expecting one of:
<BRACKET_QUOTED_IDENTIFIER> ...
<QUOTED_IDENTIFIER> ...
<BACK_QUOTED_IDENTIFIER> ...
<HYPHENATED_IDENTIFIER> ...
<IDENTIFIER> ...
<UNICODE_QUOTED_IDENTIFIER> ...
原因自己编写的sql语句中存在表名或字段名和 Flink Table&sql 中的关键字一样的冲突,这里我的是sql中的表名与 "user"关键字冲突引发的,修改一下就行了。
create table user_col(
id int ,
name string
)WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://localhost:3306/test_db',
'username' = 'root',
'password' = 'xxxx',
'table-name' = 'user'
);
执行结果:
[INFO] Execute statement succeed.
2.Could not execute SQL statement. Reason:
org.apache.flink.table.api.ValidationException: Could not find any factory for identifier 'jdbc' that implements 'org.apache.flink.table.factories.DynamicTableFactory' in the classpath.
在flink/lib下载添加上述依赖包,mysql数据库按照自己的版本来,记得把hive、kafka的适配器连接包,也一块导进来:
cd ${FLINK_HOME}/lib
wget https://repo1.maven.org/maven2/org/apache/flink/flink-connector-jdbc_2.11/1.13.6/flink-connector-jdbc_2.11-1.13.6.jar
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
wget https://repo1.maven.org/maven2/org/apache/flink/flink-connector-hive_2.11/1.13.6/flink-connector-hive_2.11-1.13.6.jar
wget https://repo1.maven.org/maven2/org/apache/flink/flink-sql-connector-kafka_2.11/1.13.6/flink-sql-connector-kafka_2.11-1.13.6.jar
3.org.apache.flink.table.executor.StreamExecutorFactory
flinkSQL建表的时候用的是blink,所以需要
导入依赖:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_${scala.binary.version}</artifactId>
<version>${flink.version}</version>
</dependency>
4.org.apache.flink.table.filesystem.FileSystemTableFactory
版本问题:本来是使用的Flink1.11,但是却采用了Flink1.10的写法