Flink中常见问题(不定时更新)

文章描述了在使用Flink执行SQL语句时遇到的两个主要问题:1)表名user与Flink的关键字冲突,导致ParseException,解决方案是修改表名为非关键字。2)缺少jdbc工厂实现,通过添加相应依赖库解决了ValidationException。此外,还提到了针对Blinkplanner的依赖导入以及版本不匹配的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只爱大锅饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值