报错:Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory
Posted 橙子园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报错:Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory相关的知识,希望对你有一定的参考价值。
重要错误提示:
Caused by: org.apache.flink.table.api.NoMatchingTableFactoryException: Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory’ in
the classpath.
这是在提交yarn时报的错误,原因其实就是少了一些包,提交的集群后一些依赖包使用flink的lib目录下的,所以我需要将一些依赖包放到lib目录下。
我们看到缺少的是org.apache.flink.table.factories.TableSourceFactory类,所以对应的应该是flink连接JDBC的包。这里我们去官网上下载你对应flink版本的连接JDBC的包,如下图:
放到提交集群的客户机部署的flink的lib目录下。
可以看到上面最主要的是缺少依赖包,其实像很多类似的错误都是由于缺少依赖引起的,尤其是当你引入Table Api使用JDBC、Hive、kafka等对应的操作api时,一定要去官网指定版本把包下下来放到lib目录下。
类似的错误
Caused by: org.apache.flink.table.api.NoMatchingTableFactoryException: Could not find a suitable table factory for ‘org.apache.flink.table.factories.CatalogFactory’ in
the classpath.
缺少如下图的包:
注意:同时需要把你maven的依赖添加范围
<scope>provided</scope>
例如:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_$scala.binary.version</artifactId>
<version>$flink.version</version>
<scope>provided</scope>
</dependency>
这是由于flink高版本的ClassLoader解析顺序为Child优先,所以在maven打jar包时,不要把lib中有的依赖打入,否则会引来冲突。当然你也可以在$FLINK_HOME/conf/flink-conf.yaml中修改为parent优先使用。
classloader.resolve-order: parent-first
以上是关于报错:Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory的主要内容,如果未能解决你的问题,请参考以下文章
pip install yaml报错ERROR:Could not find a version that satisfies the requirement yaml
[报错处理]Could not find a version that satisfies the requirement xml (from versions)
错误记录Python 安装依赖库报错 ( ERROR: Could not find a version that satisfies the requirement elftools )
报错:Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory
node-sass报错(Node Sass could not find a binding for your current environment)
Qt for android报错 Could not find method ?buildscript() for arguments