【问题标题】:Spark Unit Testing火花单元测试
【发布时间】:2016-12-16 22:04:39
【问题描述】:

我的整个 build.sbt 是:

name := """sparktest"""

version := "1.0.0-SNAPSHOT"

scalaVersion := "2.11.8"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8", "-Xexperimental")

parallelExecution in Test := false

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.0.2",
  "org.apache.spark" %% "spark-sql" % "2.0.2",
  "org.apache.avro" % "avro" % "1.8.1",

  "org.scalatest" %% "scalatest" % "3.0.1" % "test",
  "com.holdenkarau" %% "spark-testing-base" % "2.0.2_0.4.7" % "test"
)

我有一个简单的测试。显然,这只是一个起点,我想测试更多:

package sparktest

import com.holdenkarau.spark.testing.DataFrameSuiteBase

import org.scalatest.FunSuite

class SampleSuite extends FunSuite with DataFrameSuiteBase {
  test("simple test") {
    assert(1 + 1 === 2)
  }
}

我运行 sbt clean test 并失败:

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf$ConfVars

对于我的开发环境,我使用的是 spark-2.0.2-bin-hadoop2.7.ta​​r.gz

我必须以任何方式配置此环境吗?显然 HiveConf 是一个传递的 Spark 依赖

【问题讨论】:

  • 我认为您必须明确地将"org.apache.spark" %% "spark-hive" % "2.0.2" 添加到您的依赖项中。

标签: unit-testing apache-spark apache-spark-2.0


【解决方案1】:

正如@daniel-de-paula 在 cmets 中提到的,您需要将 spark-hive 添加为显式依赖项(尽管如果您的应用程序本身没有使用 hive,您可以将其限制在测试范围内)。 spark-hive 不是 spark-core 的传递依赖,这就是发生此错误的原因。 spark-hive 作为依赖项被排除在 spark-testing-base 之外,因此只进行 RDD 测试的人不需要将其添加为依赖项。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-02-21
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多