我正在使用elasticsearch中加载的一些测试数据,在本地主机上测试ElasticSearch和Spark的集成(使用elasticsearch-hadoop连接器)。调用交互式shell:
] $SPARK_HOME/bin/spark-shell --master local[4] --jars ~/spark/jars/elasticsearch-hadoop-5.2.0.jar --conf spark.es.nodes="localhost" spark.es.port="9200" spark.es.resource="myindex/mytype"
scala> import org.elasticsearch.spark._
scala> val my_rdd = sc.esRDD("myindex/mytype")
my_rdd: org.apache.spark.rdd.RDD[(String, scala.collection.Map[String,AnyRef])] = ScalaEsRDD[0] at RDD at AbstractEsRDD.scala:34但是下面的操作抛出一个异常,并使Spark退出:
scala> my_rdd.take(3).foreach(println)
17/02/02 14:08:18 ERROR executor.Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
at org.elasticsearch.spark.rdd.AbstractEsRDDIterator.<init>(AbstractEsRDDIterator.scala:28)
at org.elasticsearch.spark.rdd.ScalaEsRDDIterator.<init>(ScalaEsRDD.scala:43)
at org.elasticsearch.spark.rdd.ScalaEsRDD.compute(ScalaEsRDD.scala:39)
...
...
Driver stacktrace:))
]版本: ES : 2.4.2 Spark : 2.0.1 elasticsearch-hadoop: 5.2.0
这可能是版本之间的冲突吗?有没有办法在没有elasticsearch-hadoop连接器的情况下测试ES连接?任何提示都很感谢!
发布于 2017-02-03 04:39:57
从Spark 2.0开始,Spark默认使用Scala 2.11构建。因此您需要下载针对Scala2.11构建的elastic search spark connector for 2.0。
你可以从here下载。
https://stackoverflow.com/questions/42010632
复制相似问题