elasticsearch,Apache Spark,elasticsearch" /> elasticsearch,Apache Spark,elasticsearch" />

Apache spark Elasticsearch传输客户端:原因:java.lang.NoSuchMethodError:io.netty.buffer.CompositeByteBuff.addComponents

Apache spark Elasticsearch传输客户端:原因:java.lang.NoSuchMethodError:io.netty.buffer.CompositeByteBuff.addComponents,apache-spark,elasticsearch,Apache Spark,elasticsearch,下面是我的sbt文件。当我从IDE运行时,它工作正常,所有记录都在弹性搜索中被索引。但当我进行sbt组装并将fatjar提交给spark集群时,它会抛出以下错误。让我知道组装的fatjar有什么问题 Caused by: java.lang.NoSuchMethodError: io.netty.buffer.CompositeByteBuf.addComponents(ZLjava/lang/Iterable;)Lio/netty/buffer/CompositeByteBuf; at

下面是我的sbt文件。当我从IDE运行时,它工作正常,所有记录都在弹性搜索中被索引。但当我进行sbt组装并将fatjar提交给spark集群时,它会抛出以下错误。让我知道组装的fatjar有什么问题

Caused by: java.lang.NoSuchMethodError: io.netty.buffer.CompositeByteBuf.addComponents(ZLjava/lang/Iterable;)Lio/netty/buffer/CompositeByteBuf;
    at org.elasticsearch.transport.netty4.Netty4Utils.toByteBuf(Netty4Utils.java:78)
    at org.elasticsearch.transport.netty4.Netty4Transport.sendMessage(Netty4Transport.java:449)
    at org.elasticsearch.transport.netty4.Netty4Transport.sendMessage(Netty4Transport.java:91)
    at org.elasticsearch.transport.TcpTransport.internalSendMessage(TcpTransport.java:976)
    at org.elasticsearch.transport.TcpTransport.sendRequest(TcpTransport.java:958)
    at org.elasticsearch.transport.TransportService.sendRequestInternal(TransportService.java:520)
    at org.elasticsearch.transport.TransportService.sendRequest(TransportService.java:465)
我的项目的sbt文件

import sbt.Keys._

name := "compute-layer"

version := "1.0"

scalaVersion := "2.10.6"

libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.1" excludeAll(ExclusionRule(organization = "org.apache.logging"))
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.6.1" excludeAll(ExclusionRule(organization = "org.apache.logging"))
libraryDependencies += "org.apache.spark" % "spark-streaming-kafka_2.10" % "1.6.0" excludeAll(ExclusionRule(organization = "org.apache.logging"))
libraryDependencies += "org.elasticsearch.client" % "transport" % "5.1.1" excludeAll(ExclusionRule(organization = "org.apache.logging"))
libraryDependencies += "org.apache.logging.log4j" % "log4j-api" % "2.7"
libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % "2.7"
libraryDependencies += "com.typesafe" % "config" % "1.2.1"
libraryDependencies += "io.netty" % "netty-all" % "4.0.4.Final"

resolvers ++= Seq("clojars" at "https://clojars.org/repo",
  "conjars" at "http://conjars.org/repo",
  "plugins" at "http://repo.spring.io/plugins-release",
  "sonatype" at "http://oss.sonatype.org/content/groups/public/",
  "Online Play Repository" at "http://repo.typesafe.com/typesafe/simple/maven-releases/"
)


assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
}


//libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % "2.6.2"

我解决了一个类似的问题,如下所示:

      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>1.3.0</version>
        <exclusions>
            <exclusion>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

org.apache.hbase
hbase客户端
1.3.0
伊奥·内蒂
讨厌的

唯一适合我的解决方案是将ElasticSearch设置更改为使用netty 3

yourMapSetting.put("transport.type","netty3")
yourMapSetting.put("http.type", "netty3")

你纠正错误了吗(