火花单元测试
Spark Unit Testing
我的整个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.tar.gz
我是否必须以任何方式配置此环境?显然 HiveConf 是一个可传递的 Spark 依赖
正如@daniel-de-paula 在评论中提到的那样,您需要将 spark-hive 添加为显式依赖项(如果您不在应用程序中使用 hive,则可以将其限制在测试范围内) ). spark-hive 不是 spark-core 的传递依赖,这就是发生此错误的原因。 spark-hive 作为依赖项被排除在 spark-testing-base 之外,这样只做 RDD 测试的人就不需要将它添加为依赖项。
我的整个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.tar.gz
我是否必须以任何方式配置此环境?显然 HiveConf 是一个可传递的 Spark 依赖
正如@daniel-de-paula 在评论中提到的那样,您需要将 spark-hive 添加为显式依赖项(如果您不在应用程序中使用 hive,则可以将其限制在测试范围内) ). spark-hive 不是 spark-core 的传递依赖,这就是发生此错误的原因。 spark-hive 作为依赖项被排除在 spark-testing-base 之外,这样只做 RDD 测试的人就不需要将它添加为依赖项。