Scala を使用して、Spark アプリケーションをローカルで作成および実行しています。
私のbuild.sbt:
name : "SparkDemo"
version : "1.0"
scalaVersion : "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0" exclude("org.apache.hadoop", "hadoop-client")
libraryDependencies += "org.apache.spark" % "spark-sql_2.10" % "1.2.0"
libraryDependencies += "org.apache.hadoop" % "hadoop-common" % "2.6.0" excludeAll(
ExclusionRule(organization = "org.eclipse.jetty"))
libraryDependencies += "org.apache.hadoop" % "hadoop-mapreduce-client-core" % "2.6.0"
libraryDependencies += "org.apache.hbase" % "hbase-client" % "0.98.4-hadoop2"
libraryDependencies += "org.apache.hbase" % "hbase-server" % "0.98.4-hadoop2"
libraryDependencies += "org.apache.hbase" % "hbase-common" % "0.98.4-hadoop2"
mainClass in Compile := Some("demo.TruckEvents")
実行中に例外が発生します:
スレッド「main」の呼び出し中に java.lang.ExceptionInInitializerError が発生しました... 原因: java.lang.SecurityException: クラス「javax.servlet.FilterRegistration」の署名者情報が、同じパッケージ内の他のクラスの署名者情報と一致しません
ここで例外が発生します:
val sc = new SparkContext("local", "HBaseTest")
IntelliJ Scala/SBT プラグインを使用しています。
他の人もこの問題を抱えているのを見ました提案ソリューションしかし、これは Maven ビルドです... 私の sbt はここで間違っていますか? または、この問題を解決するための他の提案はありますか?
ベストアンサー1
同様の質問に対する私の回答を参照してくださいここクラスの競合は、HBase が に依存しorg.mortbay.jetty
、Spark が に依存しているために発生しますorg.eclipse.jetty
。HBase からの依存関係を除外することで、この問題を解決できましたorg.mortbay.jetty
。
をプルインする場合は、からhadoop-common
を除外する必要もあるかもしれません。 sbt 依存関係を次のように設定した、動作する HBase/Spark セットアップがあります。javax.servlet
hadoop-common
val clouderaVersion = "cdh5.2.0"
val hadoopVersion = s"2.5.0-$clouderaVersion"
val hbaseVersion = s"0.98.6-$clouderaVersion"
val sparkVersion = s"1.1.0-$clouderaVersion"
val hadoopCommon = "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided" excludeAll ExclusionRule(organization = "javax.servlet")
val hbaseCommon = "org.apache.hbase" % "hbase-common" % hbaseVersion % "provided"
val hbaseClient = "org.apache.hbase" % "hbase-client" % hbaseVersion % "provided"
val hbaseProtocol = "org.apache.hbase" % "hbase-protocol" % hbaseVersion % "provided"
val hbaseHadoop2Compat = "org.apache.hbase" % "hbase-hadoop2-compat" % hbaseVersion % "provided"
val hbaseServer = "org.apache.hbase" % "hbase-server" % hbaseVersion % "provided" excludeAll ExclusionRule(organization = "org.mortbay.jetty")
val sparkCore = "org.apache.spark" %% "spark-core" % sparkVersion % "provided"
val sparkStreaming = "org.apache.spark" %% "spark-streaming" % sparkVersion % "provided"
val sparkStreamingKafka = "org.apache.spark" %% "spark-streaming-kafka" % sparkVersion exclude("org.apache.spark", "spark-streaming_2.10")