2016-09-13 2 views
0

Ich habe versucht, die elastic4s in meinem Funken Anwendung zu verwenden, aber jedes Mal, es versucht, Daten zu meinem Elasticsearch Knoten senden Ich erhalte:elastic4s in Spark-applicaiton

java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor; 
     at org.elasticsearch.threadpool.ThreadPool.<clinit>(ThreadPool.java:190) 
     at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:131) 
     at com.sksamuel.elastic4s.ElasticClient$.transport(ElasticClient.scala:111) 
     at com.sksamuel.elastic4s.ElasticClient$.remote(ElasticClient.scala:92) 

nicht sicher, wo ich selbst beginnen debuggen Sie diesen Fehler. Code ist ziemlich einfach:

+1

Sieht so aus: "Guava-Problem. Etwas anderes hat eine neuere Version von Guava, aber es will 18." – theMadKing

+0

Elasticsearch und Spark scheinen wegen Guava nicht gut zu spielen. In Elasticsearch 5.0 haben sie die Abhängigkeit von Guava entfernt, was sehr schön ist. – monkjack

Antwort

0

Das Problem ist, dass Elasticsearch und Spark auf ihre Versionen von netty (und andere Abhängigkeiten) kollidieren. Die Versionen sind inkompatibel und Sie erhalten diese Arten von Ausnahmen zur Laufzeit.

Seit Version 5.3 von Elastic4s ist Ihre beste Wette, die HttpClient zu verwenden, die keine Abhängigkeiten von Dingen wie Netty oder Guava hat.

Verwandte Themen