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.
Vielen Dank für Ihre Antwort Lior. Ich habe deinen Vorschlag ausprobiert, aber ich erhebe denselben Fehler. – Patrick
sollten Sie nur einen der Knoten ES haben Selbstentdeckung Fähigkeiten. übergeben Sie es als Zeichenfolge (keine Liste) –
das ist, was ich zuerst getan habe, aber ich habe auch mit einer Liste von Knoten versucht. Kein Erfolg. – Patrick