弹性搜索与 Spark 连接器冲突,其余高级客户端没有此类字段错误

分享于2022年10月08日 apache-spark elasticsearch nebula-graph 问答
【问题标题】:Elastic Search Conflict with Spark Connector, rest high level client no such field error弹性搜索与 Spark 连接器冲突,其余高级客户端没有此类字段错误
【发布时间】:2022-08-01 15:41:49
【问题描述】:

我使用的是 elasticsearch 版本 7.9.2,它与 nebula spark connector 冲突,nebula spark connector 是用于星云图的 spark 连接器。我见过 spark 与 elasticsearch 冲突的情况,但没有现有的解决方案。

Failed to instantiate [org.elasticsearch.client.RestHighLevelClient]: Factory method 'restHighLevelClient' threw exception; nested exception is java.lang.NoSuchFieldError: INSTANCE
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
    ... 47 common frames omitted
Caused by: java.lang.NoSuchFieldError: INSTANCE
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.(PoolingNHttpClientConnectionManager.java:619)
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.(PoolingNHttpClientConnectionManager.java:165)
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.(PoolingNHttpClientConnectionManager.java:149)
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.(PoolingNHttpClientConnectionManager.java:121)
    at org.apache.http.impl.nio.client.HttpAsyncClientBuilder.build(HttpAsyncClientBuilder.java:668)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.elasticsearch.client.RestClientBuilder.createHttpClient(RestClientBuilder.java:219)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.elasticsearch.client.RestClientBuilder.build(RestClientBuilder.java:191)
    at org.elasticsearch.client.RestHighLevelClient.(RestHighLevelClient.java:287)
    at org.elasticsearch.client.RestHighLevelClient.(RestHighLevelClient.java:279)
    at com.bybit.byassets.collection.config.ElasticSearchConfig.restHighLevelClient(ElasticSearchConfig.java:54)
    at com.bybit.byassets.collection.config.ElasticSearchConfig$$EnhancerBySpringCGLIB$$e050e7f6.CGLIB$restHighLevelClient$0()
    at com.bybit.byassets.collection.config.ElasticSearchConfig$$EnhancerBySpringCGLIB$$e050e7f6$$FastClassBySpringCGLIB$$43cd2bed.invoke()
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
    at com.bybit.byassets.collection.config.ElasticSearchConfig$$EnhancerBySpringCGLIB$$e050e7f6.restHighLevelClient()
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 48 common frames omitted

我曾尝试对 nebula spark 连接器 jar 进行着色,但错误仍然存​​在。任何帮助表示赞赏。谢谢!


【解决方案1】:

这看起来类似于 this question this

你能检查一下 httpClient 的所有依赖吗,在 INSTANCE 字段引入之前应该有一个旧版本,我们应该排除 httpClient

【讨论】: