2

Ich habe ein elasticsearch Docker Bild auf 127.0.0.1:9200 hören, ich habe es mit Sinn und Kibana getestet, funktioniert es gut, ich bin in der Lage, Dokumente zu indizieren und abzufragen. Jetzt, wenn ich versuche, um es von einem Funken App auf retryingSpark App kann nicht auf Elasticsearch Cluster in Docker

val sparkConf = new SparkConf().setAppName("ES").setMaster("local") 
sparkConf.set("es.index.auto.create", "true") 
sparkConf.set("es.nodes", "127.0.0.1") 
sparkConf.set("es.port", "9200") 
sparkConf.set("es.resource", "spark/docs") 


val sc = new SparkContext(sparkConf) 
val sqlContext = new SQLContext(sc) 
val numbers = Map("one" -> 1, "two" -> 2, "three" -> 3) 
val airports = Map("arrival" -> "Otopeni", "SFO" -> "San Fran") 
val rdd = sc.parallelize(Seq(numbers, airports)) 

rdd.saveToEs("spark/docs") 

Es kann keine Verbindung herstellen, und hält

16/07/11 17:20:07 INFO HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: Operation timed out 16/07/11 17:20:07 INFO HttpMethodDirector: Retrying request

Ich habe versucht zu schreiben IPAddress von Docker für das Elasticsearch Bild inspizieren gegeben verwenden, das funktioniert auch nicht. Wenn ich jedoch eine native Installation von elasticsearch verwende, läuft die Spark-App einwandfrei. Irgendwelche Ideen?

Antwort

1

Paar Dinge, die ich würde überprüfen:

  • Die Elasticsearch-Hadoop Funkensteckerversion mit dem Sie arbeiten. Stellen Sie sicher, dass es sich nicht um Beta handelt. Es gab einen Fehler im Zusammenhang mit der IP-Auflösung.

  • Da 9200 der Standardanschluss ist, können Sie diese Zeile entfernen: sparkConf.set("es.port", "9200") und überprüfen.

  • Überprüfen Sie, ob in Ihrer Spark-Umgebung oder den Konfigurationsdateien kein Proxy konfiguriert ist.

  • Ich nehme an, dass Sie Elasticsaerch und Spark auf demselben Computer ausführen. Können Sie versuchen, die IP-Adresse Ihres Computers anstelle von 127.0.0.1 zu konfigurieren?

Hoffe, das hilft! :)