目录
二、ES集群和Elasticsearch-hadoop版本问题
[三、Elasticsearch-hadoop 和Scala版本以及Spark版本(版本不匹配会有各种异常信息](#三、Elasticsearch-hadoop 和Scala版本以及Spark版本(版本不匹配会有各种异常信息)
一、使用的插件
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch-hadoop</artifactId>
<version>xxx</version>
</dependency>
二、ES集群和Elasticsearch-hadoop版本问题
运行异常信息:
Cannot detect ES version - typically this happens if the network/Elasticsearch cluster is not accessible or when targeting a WAN/Cloud instance without the proper setting 'es.nodes.wan.only'
Invalid major version [5.6.3]. Version is lower than minimum required version [6.x].
原因:7.14.0版本以及以上要求ES集群的版本是6.X
解决方法:升级ES集群或者降低插件版本
三、Elasticsearch-hadoop 和Scala版本以及Spark版本(版本不匹配会有各种异常信息)
各种错误:
java.lang.NoSuchMethodError:scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;
Caused by: java.lang.ClassNotFoundException: scala.collection.TraversableOnce$class
java.lang.NoClassDefFoundError: org/apache/spark/Partition$class
以上这些都是版本不一致导致的
解决办法
Elasticsearch-hadoop 的6.x~8.x 的Spark版本都是2.11的,所以如果你的Spark的jar包用的是2.12得改成2.11 并且scala的版本也得保持在2.11版本,比如spark-core_2.12 得改成spark-core_2.11。
还得注意一点:如果你的代码不是本地打包的话,还得注意一下打包环境的Spark版本版本,也得是3.0以下才行,不然还是会有问题。具体可以看版本对应关系
Spark和Scala个版本对应关系 具体可以看这里