flink 写入es的依赖导入问题(踩坑记录)
ps:可能只是flink低版本才会有这个问题
1. 按照官网的导入方式:
2. 你会在运行sql-client的时候完美得到一个错误:
Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an issue.at org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:201)at org.apache.flink.table.client.SqlClient.main(SqlClient.java:161)
Caused by: org.apache.flink.table.api.TableException: Could not instantiate the executor. Make sure a planner module is on the classpathat org.apache.flink.table.client.gateway.context.ExecutionContext.lookupExecutor(ExecutionContext.java:165)at org.apache.flink.table.client.gateway.context.ExecutionContext.createTableEnvironment(ExecutionContext.java:114)at org.apache.flink.table.client.gateway.context.ExecutionContext.<init>(ExecutionContext.java:66)at org.apache.flink.table.client.gateway.context.SessionContext.create(SessionContext.java:246)at org.apache.flink.table.client.gateway.local.LocalContextUtils.buildSessionContext(LocalContextUtils.java:87)at org.apache.flink.table.client.gateway.local.LocalExecutor.openSession(LocalExecutor.java:87)at org.apache.flink.table.client.SqlClient.start(SqlClient.java:88)at org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:187)... 1 more
Caused by: org.apache.flink.table.api.TableException: Could not load service provider for factories.at org.apache.flink.table.factories.FactoryUtil.discoverFactories(FactoryUtil.java:627)at org.apache.flink.table.factories.FactoryUtil.discoverFactory(FactoryUtil.java:378)at org.apache.flink.table.client.gateway.context.ExecutionContext.lookupExecutor(ExecutionContext.java:156)... 8 more
Caused by: java.util.ServiceConfigurationError: org.apache.flink.table.factories.Factory: Provider org.apache.flink.streaming.connectors.elasticsearch.table.Elasticsearch7DynamicSinkFactory could not be instantiatedat java.util.ServiceLoader.fail(ServiceLoader.java:232)at java.util.ServiceLoader.access$100(ServiceLoader.java:185)at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)at java.util.ServiceLoader$1.next(ServiceLoader.java:480)at java.util.Iterator.forEachRemaining(Iterator.java:116)at org.apache.flink.table.factories.FactoryUtil.discoverFactories(FactoryUtil.java:623)... 10 more
Caused by: java.lang.NoClassDefFoundError: org/apache/flink/streaming/connectors/elasticsearch/table/ElasticsearchConnectorOptionsat org.apache.flink.streaming.connectors.elasticsearch.table.Elasticsearch7DynamicSinkFactory.<clinit>(Elasticsearch7DynamicSinkFactory.java:61)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at java.lang.Class.newInstance(Class.java:442)at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)... 14 more
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.connectors.elasticsearch.table.ElasticsearchConnectorOptionsat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 21 more
3. 通过idea下载jar包之后,会发现org.apache.flink.streaming.connectors.elasticsearch.table.ElasticsearchConnectorOptions在另一个包
4.解决方法:往lib下面导入这个对应版本的flink-connector-elasticsearch-base_2.12-1.14.6.jar