我正在使用Scala和Spark进行测试,创建SparkContext的方式如下:
val conf = new SparkConf().setMaster("local").setAppName("test")
val sc = new SparkContext(conf)
第一次执行时没有错误。但现在出现了这个消息(以及测试失败的通知):
Only one SparkContext may be running in this JVM (see SPARK-2243).
看起来我需要检查是否有正在运行的SparkContext并在启动新的之前停止它(我不想允许多个上下文)。我该怎么做?
更新:
我尝试了这个,但是出现了相同的错误(我正在从IntellijIdea运行测试,并在执行代码之前对其进行编译):
val conf = new SparkConf().setMaster("local").setAppName("test")
// also tried: .set("spark.driver.allowMultipleContexts", "true")
更新2:
class TestApp extends SparkFunSuite with TestSuiteBase {
// use longer wait time to ensure job completion
override def maxWaitTimeMillis: Int = 20000
System.clearProperty("spark.driver.port")
System.clearProperty("spark.hostPort")
var ssc: StreamingContext = _
val config: SparkConf = new SparkConf().setMaster("local").setAppName("test")
.set("spark.driver.allowMultipleContexts", "true")
val sc: SparkContext = new SparkContext(config)
//...
test("Test1")
{
sc.stop()
}
}
before
/after
块来共享相同的Spark上下文,并且仅在所有测试完成时停止您的上下文。 - jarandaf