2017-01-23 1 views
0

Ich versuche, mit pyspark einen Elasticsearch Index, aber ohne Erfolg abfragen:Abfrage mit pyspark und Elasticsearch index: wie es.nodes zu spezifizieren?

] ./bin/pyspark --driver-class-path=jars/elasticsearch-hadoop-2.2.0.jar 

In ipython, Funken Version 2.0.1:

In [1]: es_read_conf = { "es.resource" : "test/docs" , "es.nodes" : ["xx.xx.xx.aa","xx.xx.xx.bb","xx.xx.xx.cc"],"es.port" : "9200", "es.net.http.auth.user": "myusername", "es.net.http.auth.pass": "mypassword"} 
es_rdd = sc.newAPIHadoopRDD(inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",keyClass="org.apache.hadoop.io.NullWritable", valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable", conf=es_read_conf) 

ich die folgende Fehlermeldung erhalten:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD. 
: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String 

Es scheint, dass es ein Problem gibt, die Python-Liste von es.nodes in eine Java-Zeichenfolge zu konvertieren. Ich habe versucht, mit einem String nur der Adresse meines Elasticsearch Master-Knoten aus („xx.xx.xx.aa“), aber ich bekomme einen anderen Fehler:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD. 
: org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: [HEAD] on [test/docs] failed; server[xx.xx.xx.bb:9202] returned [502|Bad Gateway:] 

Manchmal ist der Fehler bezieht sich auf Datenknoten bb, manchmal cc. Interessanterweise passiert es, wenn ich den gleichen Befehl mehrere Male ausführe, dass ich keinen Fehler erhalte (vielleicht ist es, wenn die Abfrage nur gegen den Hauptknoten ausgeführt wird?). Ich habe kein Problem damit, den Befehl mit localhost als einzige es.nodes auszuführen.

Antwort

0

siehe ES-hadoop Dokumentation enter link description here

Sie die folgende Eigenschaft festlegen müssen conf entfachen:

conf.set("es.nodes","<your host>") 
+0

Vielen Dank für Ihre Antwort Lior. Ich habe deinen Vorschlag ausprobiert, aber ich erhebe denselben Fehler. – Patrick

+0

sollten Sie nur einen der Knoten ES haben Selbstentdeckung Fähigkeiten. übergeben Sie es als Zeichenfolge (keine Liste) –

+0

das ist, was ich zuerst getan habe, aber ich habe auch mit einer Liste von Knoten versucht. Kein Erfolg. – Patrick

Verwandte Themen