在提供依赖项时尝试针对HiveContext进行测试会抛出java.lang.SecurityException

时间:2017-12-12 13:53:46

标签: scala apache-spark sbt sbt-assembly spark-hive

当运行创建spark上下文的单元测试时,我得到java.lang.SecurityException。我明白原因是什么,但不知道如何追踪如何解决它。这是多个依赖关系共享具有不同签名者信息的相同包javax.servlet

// Dependencies
libraryDependencies ++= Seq(
  "org.apache.spark" % "spark-hive_2.10" % "1.6.2" % Provided
)

// Test dependencies
libraryDependencies ++= Seq(
  "junit" % "junit" % "4.10" % Test,
  "org.scalatest" %% "scalatest" % "3.0.4" % Test,
  "org.apache.hadoop" % "hadoop-minicluster" % "2.5.0" % Test
)

我创建了sample project to demonstrate this

有许多相同问题的例子提出org.mortonbay.jettyjavax.servlet的排除规则,但似乎没有一个适用于我。

当我在构建的spark-submit jar上使用sbt assembly时,它工作文件,我只是不能为它编写测试。

1 个答案:

答案 0 :(得分:1)

好的,弄明白了这个问题。事实证明,导致问题的依赖树实际上是我的测试依赖项,而不是运行时依赖项。

更新到以下内容已解决了该问题。

    type Armour =
  {name: string;
   aVal: float;
   dType: DamType;
   info: string;
   iSpace: int;
   hidden: bool;}
type Weapon =
  {name: string;
   dVal: float;

我已经在github上更新了示例。