Flink: Could not find any factory for identifier kafka/jdbc/hive imple

打印 上一主题 下一主题

主题 541|帖子 541|积分 1623

运行 Flink 应用或执行 Flink SQL 时会经常碰到下面的错误:
   org.apache.flink.table.api.ValidationException: Could not find any factory for identifier ‘???’ that implements ‘org.apache.flink.table.factories.DynamicTableFactory’ in the classpath.
  其中 identifier 可以是 kafka, jdbc, hive, hudi 等等,而且这一题目通常有伴随着一种很“诡异”的表现:


  • 如果步伐打包成 uber-jar,全部相关 Connector Jar 包的 class 都在里面,此题目肯定会出现
  • 如果单独将相关 Connector 的 Jar 包部署到 ${FLINK_HOME}/lib 目次下,题目就不会出现
导致这一题目的根源并非相关 Connector 的 Jar 包没有添加到步伐依赖中,或者在打成 uber-jar 的过程中丢失了 class 文件,而是由于一个更隐秘的缘故原由:Java 的 Service Provider Interface (SPI)机制
在 Flink 的 Table API & SQL 框架下,各类 Connector 和 Format 必要提供 org.apache.flink.table.factories.DynamicTableFactory 这一接口的具体实现,从而把本身“注册”或者说“嵌入”到 Flink 运行情况中,而这必要在生成的 Jar 包中往 META-INF/services/目次下添加一个与接口类同名的文件,并

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表