sha*_*neb 2 scala scalatest apache-spark
以下scala代码工作正常,测试运行:
import org.scalatest._
import com.holdenkarau.spark.testing._
class DummyTest extends FunSuite with SharedSparkContext {
test("shared context only works inside test functions.") {
val myRDD = sc.parallelize(List(1,2,3,4))
}
}
Run Code Online (Sandbox Code Playgroud)
但是,以下scala代码导致sc.parallelize行上的java.lang.NullPointerException:
import org.scalatest._
import com.holdenkarau.spark.testing._
class DummyTest extends FunSuite with SharedSparkContext {
val myRDD = sc.parallelize(List(1,2,3,4))
test("shared context only works inside test functions.") {
assert(true)
}
}
Run Code Online (Sandbox Code Playgroud)
在测试函数之外使用SparkContext时,导致NullPointerException的原因是什么?
SparkContext在SharedSparkContext中声明,但未作为该特征初始化的一部分进行初始化.而是在trait的beforeAll()方法中初始化,该方法在套件完全实例化后由测试框架调用.来源在这里:https://github.com/holdenk/spark-testing-base/blob/master/src/main/pre-2.0/scala/com/holdenkarau/spark/testing/SharedSparkContext.scala.如果在初始化类时使用它,beforeAll()尚未调用,那么它仍为null.
总而言之,订单是:
因此,您可以sc在步骤4中使用,但不能在步骤2中使用.
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |