笔者在项目中添加了flink-connector-jdbc的依赖,全局搜索org.apache.flink.table.factories.DynamicTableFactory的实现类中有很多,其中包含Jdbc的实现类,但在服务器上运行任务时却报以下错误。
1. 异常详情
Caused by: 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.
Available factory identifiers are:
blackhole
datagen
filesystem
print
2. 原因
Flink类加载顺序导致,需要将jdbc, hive等connector包放入flink lib目录下,并在用户项目中将相关依赖provided。
3. 解决办法
将 flink-connector-jdbc相关jar包从项目中排除,并放入flink lib目录下,重启服务。