Flink:注册Table Kafka Source报错处理(flink table)

flink 代码:

注册kafka source 版本:0.10,格式:Json

  Flink:注册Table Kafka Source报错处理(flink table)_第1张图片

相关依赖,版本为flink1.8.0:

这里要注意flink-json,如果没有此依赖,以上代码块将无法使用Json格式

        
            org.apache.flink
            flink-streaming-java_${scala.binary.version}
            ${flink.version}
        
        
            org.apache.flink
            flink-table-planner_2.11
            ${flink.version}
        
         
            org.apache.flink
            flink-table-api-java-bridge_2.11
            ${flink.version}
        
        
            org.apache.flink
            flink-connector-kafka-0.10_${scala.binary.version}
            ${flink.version}
        
        
            org.apache.flink
            flink-json
            ${flink.version}
        

在本地运行没有出现任何问题,打jar到服务器之运行报:

找不到  org.apache.flink.table.factories.TableSourceFactory

(此处不贴报错截图,有可能报错提示信息会有些出处,但万卷不离其宗,还有的可能是  org.apache.flink.table.factories.TableSinkFactory )

原因:

进入org.apache.flink.table.factories.TableFactoryService源码中你可以找到这个类似匹配器的代码块,异常由这里发出:

Flink:注册Table Kafka Source报错处理(flink table)_第2张图片

查看TableFactoryService的实现,是有KafkaTable的:

Flink:注册Table Kafka Source报错处理(flink table)_第3张图片

而查看此目录下TableFactory配置文件中并没有Kafka Source及Sink相关Factory:

Flink:注册Table Kafka Source报错处理(flink table)_第4张图片 Flink:注册Table Kafka Source报错处理(flink table)_第5张图片

解决方法一: 

找到源码目录 flink-table\flink-table-planner\src\main\resources\META-INF\services\org.apache.flink.table.factories.TableFactory进行更改,添加以下内容并重新编译:

org.apache.flink.streaming.connectors.kafka.Kafka09TableSourceSinkFactory
org.apache.flink.streaming.connectors.kafka.Kafka010TableSourceSinkFactory
org.apache.flink.formats.json.JsonRowFormatFactory

开始并没有添加 JsonRowFormatFactory,也报出了找不到的异常信息,所以这里直接加上

解决方法二(推荐): 

Flink:注册Table Kafka Source报错处理(flink table)_第6张图片  copy后添加以上内容

添加后打包到服务器正常运行。

你可能感兴趣的:(flink)