これにはいくつか前の質問がありますが、回答では問題解決のための十分な情報が得られないことがよくあります。NettyバージョンとSpark + Elasticsearch Transportとの競合
私はApache Sparkを使用して、Elasticsearchにデータを取り込みます。私たちは、X-Packセキュリティとそれに対応するトランスポートクライアントを使用しています。私は輸送クライアントを使用して特別な場合にインデックスを作成/削除し、次にSparkを使用して摂取を行っています。私たちのコードがclient.close()
になると例外がスローされます。
Exception in thread "elasticsearch[_client_][generic][T#2]" java.lang.NoSuchMethodError: io.netty.bootstrap.Bootstrap.config()Lio/netty/bootstrap/BootstrapConfig;
at org.elasticsearch.transport.netty4.Netty4Transport.lambda$stopInternal$5(Netty4Transport.java:443)
at org.apache.lucene.util.IOUtils.close(IOUtils.java:89)
at org.elasticsearch.common.lease.Releasables.close(Releasables.java:36)
at org.elasticsearch.common.lease.Releasables.close(Releasables.java:46)
at org.elasticsearch.common.lease.Releasables.close(Releasables.java:51)
at org.elasticsearch.transport.netty4.Netty4Transport.stopInternal(Netty4Transport.java:426)
at org.elasticsearch.transport.TcpTransport.lambda$doStop$5(TcpTransport.java:959)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
最初は、私はX-パック交通クライアントがスパークから来るネッティーを使用していたので、私はそれを除外することを信じていました。それを除外しても、同じ問題が発生します。ここでは、依存関係の私達のセットです:
libraryDependencies ++= Seq(
"com.crealytics" % "spark-excel_2.11" % "0.9.1" exclude("io.netty", "netty-all"),
"com.github.alexarchambault" %% "scalacheck-shapeless_1.13" % "1.1.6" % Test,
"com.holdenkarau" % "spark-testing-base_2.11" % "2.2.0_0.7.4" % Test exclude("org.scalatest", "scalatest_2.11") ,
"com.opentable.components" % "otj-pg-embedded" % "0.9.0" % Test,
"org.apache.spark" % "spark-core_2.11" % "2.2.0" % "provided" exclude("org.scalatest", "scalatest_2.11") exclude("io.netty", "netty-all"),
"org.apache.spark" % "spark-sql_2.11" % "2.2.0" % "provided" exclude("org.scalatest", "scalatest_2.11") exclude("io.netty", "netty-all"),
"org.apache.spark" % "spark-hive_2.11" % "2.2.0" % "provided" exclude("org.scalatest", "scalatest_2.11") exclude("io.netty", "netty-all"),
"org.apache.logging.log4j" % "log4j-core" %"2.8.2",
"org.elasticsearch" % "elasticsearch-spark-20_2.11" % "5.5.0" exclude("org.scalatest", "scalatest_2.11") exclude("io.netty", "netty-all"),
"org.elasticsearch.client" % "x-pack-transport" % "5.5.0",
"org.elasticsearch.client" % "transport" % "5.5.0",
"org.elasticsearch.test" % "framework" % "5.4.3" % Test,
"org.postgresql" % "postgresql" % "42.1.4",
"org.scalamock" %% "scalamock-scalatest-support" % "3.5.0" % Test,
"org.scalatest" % "scalatest_2.11" % "3.0.1" % Test,
"org.scalacheck" %% "scalacheck" % "1.13.4" % Test,
"org.scalactic" %% "scalactic" % "3.0.1",
"org.scalatest" %% "scalatest" % "3.0.1" % Test,
"mysql" % "mysql-connector-java" % "5.1.44"
)
は私がsbt dependencyTree
で検証SBTがスパークからネッティーを除くと火花Excelをされていない、と私はなぜ...私たちは、SBT 1.0.4を使用しているかわかりません。
更新:spark-submit/Sparkが犯人で、以下の回答があります。
バージョンがあるExclusionRule( "io.netty"% "netty-all"% "4.1.6.Final")。または何でも試してみることができますか?これはivyによって解決され、特定のバージョンが必要なので、基本的に正確なバージョンのnettyを指定します。 –
'ExclusionRule()'はバージョンを受け付けていないようです... – skylerl
変更されたexcludeAllは無用に除外されます – skylerl