scala – 确保应用程序中只有一个Spark上下文的良好实践

我正在寻找一种好方法来确保我的应用程序只使用一个单独的Spark Context(sc).在开发过程中,我经常遇到错误,不得不重启我的游戏!服务器重新测试我的修改.
Singleton模式会成为解决方案吗?

object sparckContextSingleton {
  @transient private var instance: SparkContext = _
  private val conf : SparkConf = new SparkConf()
    .setMaster("local[2]")
    .setAppName("myApp")

  def getInstance(): SparkContext = {
    if (instance == null){
      instance = new SparkContext(conf)
    }
    instance
  }  
}

这不是一件好事.我应该停止SparkContext吗?

解决方法

这应该足以做到这一点,重要的是使用val而不是var.

object SparkContextKeeper {
  val conf = new SparkConf().setAppName("SparkApp")
  val context= new SparkContext(conf)
  val sqlContext = new sqlContext(context)
}

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...