报错: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