scala – 如何在打开新的SparkContext之前停止它
发布时间:2020-12-16 08:59:21 所属栏目:安全 来源:网络整理
导读:我正在使用Spark在 Scala中执行测试,创建一个SparkContext,如下所示: val conf = new SparkConf().setMaster("local").setAppName("test")val sc = new SparkContext(conf) 第一次执行后没有错误.但现在我收到此消息(以及失败的测试通知): Only one SparkC
我正在使用Spark在
Scala中执行测试,创建一个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() } } 解决方法
要停止现有上下文,可以在给定的SparkContext实例上使用
stop 方法.
import org.apache.spark.{SparkContext,SparkConf} val conf: SparkConf = ??? val sc: SparkContext = new SparkContext(conf) ... sc.stop() 要重用现有上下文或创建新上下文,可以使用 val sc1 = SparkContext.getOrCreate(conf) ... val sc2 = SparkContext.getOrCreate(conf) 在测试套件中使用时,两种方法都可用于实现不同的事物: > stop – 在afterAll方法中弯曲上下文(参见例如 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |