【问题标题】:Attempts to test against a HiveContext when dependencies are provided throws java.lang.SecurityException在提供依赖项时尝试针对 HiveContext 进行测试会抛出 java.lang.SecurityException
【发布时间】:2018-05-26 05:45:32
【问题描述】:

在运行创建 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 的排除规则,但似乎没有一个对我有用。

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

【问题讨论】:

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


    【解决方案1】:

    好的,找到问题了。事实证明,导致问题的依赖树实际上是在我的测试依赖项中,而不是运行时依赖项。

    更新到以下已解决问题。

    // 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
    ).map(
      _.excludeAll(ExclusionRule(organization = "javax.servlet"))
    )
    

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

    【讨论】:

      猜你喜欢
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2017-02-25
      • 2016-04-18
      • 2019-06-29
      • 2013-07-29
      • 1970-01-01
      相关资源
      最近更新 更多