Java.lang.NoSuchMethodError for saveToEs method


(Amir) #1

I am new to es-hadoop. I wrote a simple code using the tutorial

import org.apache.spark.SparkConf
import org.elasticsearch.spark._


val conf = sc.getConf
conf.set("es.index.auto.create", "true")
conf.set("es.nodes", "###")
conf.set("es.port","9200")
conf.set("es.http.timeout","5m")
conf.set("es.scroll.size","50")

val numbers = Map("one" -> 1, "two" -> 2, "three" -> 3)
val airports = Map("arrival" -> "Otopeni", "SFO" -> "San Fran")

sc.makeRDD(Seq(numbers, airports)).saveToEs("spark/docs")

but I got the following error, I googled and it seems the problem is due to version mismatch, but I think I am using the correct versions.

$> spark-submit --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.0
      /_/
                        
Type --help for more information.

and I added elasticsearch-spark_2.11-2.3.0.jar to spark classpath.
I'll be thankful if anyone can help.

Error message:

import org.apache.spark.SparkConf
import org.elasticsearch.spark._
conf: org.apache.spark.SparkConf = org.apache.spark.SparkConf@166b830
res112: org.apache.spark.SparkConf = org.apache.spark.SparkConf@166b830
res113: org.apache.spark.SparkConf = org.apache.spark.SparkConf@166b830
res114: org.apache.spark.SparkConf = org.apache.spark.SparkConf@166b830
res115: org.apache.spark.SparkConf = org.apache.spark.SparkConf@166b830
res116: org.apache.spark.SparkConf = org.apache.spark.SparkConf@166b830
numbers: scala.collection.immutable.Map[String,Int] = Map(one -> 1, two -> 2, three -> 3)
airports: scala.collection.immutable.Map[String,String] = Map(arrival -> Otopeni, SFO -> San Fran)
java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
at org.elasticsearch.spark.rdd.EsSpark$.saveToEs(EsSpark.scala:52)
at org.elasticsearch.spark.package$SparkRDDFunctions.saveToEs(package.scala:37)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:120)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:125)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:127)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:129)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:131)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:133)
..........


(Costin Leau) #2

Likely you have a mixture of scala bytecode - that is you are running Spark compiled for Scala 2.10 and using es-hadoop compiled for Scala 2.11. Or vice-versa.


(Amir) #3

Thank you very much @costin , I used elasticsearch-spark_2.10-2.3.0.jar instead elasticsearch-spark_2.11-2.3.0.jar and it worked :slight_smile:


(system) #4