gpt4 book ai didi

scala - 使用 FunSuite 测试 Spark 抛出 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 01:03:04 24 4
gpt4 key购买 nike

我想使用 FunSuite测试我的 Spark通过使用名为 localTest 的新函数扩展 FunSuite 来完成作业,该函数使用默认的 SparkContext 运行测试:

class SparkFunSuite extends FunSuite {

def localTest(name : String)(f : SparkContext => Unit) : Unit = {
val conf = new SparkConf().setAppName(name).setMaster("local")
val sc = new SparkContext(conf)
try {
this.test(name)(f(sc))
} finally {
sc.stop
}
}
}

然后我可以轻松地将测试添加到我的测试套件中:

class MyTestSuite extends SparkFunSuite {

localTest("My Spark test") { sc =>
assertResult(2)(sc.parallelize(Seq(1,2,3)).filter(_ <= 2).map(_ + 1).count)
}
}

问题是当我运行测试时我得到一个NullPointerException:

[info] MyTestSuite:
[info] - My Spark test *** FAILED ***
[info] java.lang.NullPointerException:
[info] at org.apache.spark.SparkContext.defaultParallelism(SparkContext.scala:1215)
[info] at org.apache.spark.SparkContext.parallelize$default$2(SparkContext.scala:435)
[info] at MyTestSuite$$anonfun$1.apply(FunSuiteTest.scala:24)
[info] at MyTestSuite$$anonfun$1.apply(FunSuiteTest.scala:23)
[info] at SparkFunSuite$$anonfun$localTest$1.apply$mcV$sp(FunSuiteTest.scala:13)
[info] at SparkFunSuite$$anonfun$localTest$1.apply(FunSuiteTest.scala:13)
[info] at SparkFunSuite$$anonfun$localTest$1.apply(FunSuiteTest.scala:13)
[info] at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
[info] at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
[info] at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info] ...

是什么导致了 NullPointerException?在这种情况下,我使用 Spark 的方式不正确吗?

我将 Scala 2.10.4 与 spark-core 1.0.2 和 scalatest 2.2.2 一起使用。

最佳答案

如果您在多个类中运行 SparkContext,请确保将 parallelExecution in Test := false 放入您的 build.sbt 中。我在运行命令时遇到了问题:sbt test。我会得到由 JVM 中运行的多个 SparkContext 引起的 NPEPARSING_ERROR

关于scala - 使用 FunSuite 测试 Spark 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com