如何在 ScalaTest 测试中正确使用 Spark?
How to correctly use Spark in ScalaTest tests?
我有多个 ScalaTest 类,它们使用 BeforeAndAfterAll
构造一个 SparkContext
并在之后像这样停止它:
class MyTest extends FlatSpec with Matchers with BeforeAndAfterAll {
private var sc: SparkContext = null
override protected def beforeAll(): Unit = {
sc = ... // Create SparkContext
}
override protected def afterAll(): Unit = {
sc.stop()
}
// my tests follow
}
这些测试 运行 从 IntelliJ IDEA 启动时很好,但是当 运行 宁 sbt test
时,我得到 WARN SparkContext: Another SparkContext is being constructed (or threw an exception in its constructor). This may indicate an error, since only one SparkContext may be running in this JVM (see SPARK-2243).
,之后,一堆其他异常我想这与这个问题有关。
如何正确使用Spark?我是否必须为整个测试套件创建一个全局 SparkContext
,如果是,我该怎么做?
好像只见树木不见森林,我忘记了 build.sbt
中的以下行:
parallelExecution in test := false
通过这一行,测试运行。
我有多个 ScalaTest 类,它们使用 BeforeAndAfterAll
构造一个 SparkContext
并在之后像这样停止它:
class MyTest extends FlatSpec with Matchers with BeforeAndAfterAll {
private var sc: SparkContext = null
override protected def beforeAll(): Unit = {
sc = ... // Create SparkContext
}
override protected def afterAll(): Unit = {
sc.stop()
}
// my tests follow
}
这些测试 运行 从 IntelliJ IDEA 启动时很好,但是当 运行 宁 sbt test
时,我得到 WARN SparkContext: Another SparkContext is being constructed (or threw an exception in its constructor). This may indicate an error, since only one SparkContext may be running in this JVM (see SPARK-2243).
,之后,一堆其他异常我想这与这个问题有关。
如何正确使用Spark?我是否必须为整个测试套件创建一个全局 SparkContext
,如果是,我该怎么做?
好像只见树木不见森林,我忘记了 build.sbt
中的以下行:
parallelExecution in test := false
通过这一行,测试运行。