【问题标题】:Exception raised with simple esRDD (elasticsearch-hadoop connector used in Spark)使用简单 esRDD 引发的异常(Spark 中使用的 elasticsearch-hadoop 连接器)
【发布时间】:2017-02-03 04:39:56
【问题描述】:

我正在本地主机上测试 ElasticSearch 和 Spark 集成(使用 elasticsearch-hadoop 连接器),使用在 elasticsearch 中加载的一些测试数据。调用交互式 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 火花:2.0.1 elasticsearch-hadoop:5.2.0

会不会是版本之间的冲突?有没有办法在没有 elasticsearch-hadoop 连接器的情况下测试 ES 连接? 任何提示表示赞赏!

【问题讨论】:

    标签: scala elasticsearch apache-spark


    【解决方案1】:

    从 Spark 2.0 开始,Spark 默认使用 Scala 2.11 构建。所以 您需要下载针对 Scala 2.11 构建的 2.0 的弹性搜索火花连接器。

    您可以从here 下载它。

    【讨论】:

    • 您提供的链接指的是es-hadoop 5.1.2。你的意思是我用的版本(5.2.0)不兼容spark 2.0.1?
    • 它不是 es-hadoop,而是 es-spark。下载文件你就会明白其中的区别!
    • 抱歉,我现在不在办公桌前。 es-spark 和 es-hadoop 是否提供相同的功能?它们是互补产品还是并行产品?
    • es-hadoop 是 Hadoop、Spark、Storm、Pig 等所有大数据技术的组合连接器。 ..ETC。其中 es-spark 是 es-hadoop 的子项目,仅支持 Spark。
    • 所以也许 es-hadoop 对我的需求来说太大了,但据我了解它应该可以工作,我错了吗?
    猜你喜欢
    • 1970-01-01
    • 2016-12-10
    • 2021-10-02
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 2016-08-26
    • 2016-01-30
    • 2020-01-27
    相关资源
    最近更新 更多