sbt/assemblyを初めて使用しました。私はいくつかの依存関係の問題を解決しようとしています。それを行う唯一の方法はカスタムマージ戦略です。私はカフカライブラリーのためにこの試合のエラーを示していますassemblyMergeStrategyが原因でscala.MatchErrorが発生する
[error] (*:assembly) scala.MatchError: org/apache/spark/streaming/kafka/KafkaUtilsPythonHelper$$anonfun$13.class (of class java.lang.String)
が、私は完全にそのライブラリを取る場合、私が取得:しかし、私は、マージ戦略を追加しようとするたびに、私はコンパイルに一見ランダムMatchErrorを取得します別のライブラリのMatchError。すべてのライブラリを取り出すと、私自身のコードでMatchErrorが得られます。これは、「assemblyMergeStrategy」ブロックを取り除くと発生しません。私は確かに何か信じられないほど基本的なものを欠いているが、私の人生のために私はそれを見つけることができず、私はこの問題を持っている誰かを見つけることができない。私は古いmergeStrategy構文を試しましたが、私がドキュメントとSOから読むことができる限り、これは今すぐ書くための適切な方法です。助けてください?ここで
は私のプロジェクト/ assembly.sbtです:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
そして、私のproject.sbtファイル:
name := "Clerk"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.6.1" % "provided",
"org.apache.spark" %% "spark-sql" % "1.6.1" % "provided",
"org.apache.spark" %% "spark-streaming" % "1.6.1" % "provided",
"org.apache.kafka" %% "kafka" % "0.8.2.1",
"ch.qos.logback" % "logback-classic" % "1.1.7",
"net.logstash.logback" % "logstash-logback-encoder" % "4.6",
"com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
"org.apache.spark" %% "spark-streaming-kafka" % "1.6.1",
("org.apache.spark" %% "spark-streaming-kafka" % "1.6.1").
exclude("org.spark-project.spark", "unused")
)
assemblyMergeStrategy in assembly := {
case PathList("org.slf4j", "impl", xs @ _*) => MergeStrategy.first
}
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)