确保应用程序中只有一个 Spark 上下文的良好实践
Good Practice to insure only one Spark context in application
我正在寻找一种好方法来确保我的应用程序仅使用一个 Spark 上下文 (sc)。在开发过程中,我经常 运行 出错,不得不重新启动我的游戏!服务器重新测试我的修改。
单例模式会是解决方案吗?
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 吗?
在 Play 中,您应该编写一个公开 SparkContext 的插件。使用插件的启动和停止挂钩启动和停止上下文。
这应该足以解决问题,重要的是使用 val 而不是 var。
object SparkContextKeeper {
val conf = new SparkConf().setAppName("SparkApp")
val context= new SparkContext(conf)
val sqlContext = new SQLContext(context)
}
我正在寻找一种好方法来确保我的应用程序仅使用一个 Spark 上下文 (sc)。在开发过程中,我经常 运行 出错,不得不重新启动我的游戏!服务器重新测试我的修改。 单例模式会是解决方案吗?
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 吗?
在 Play 中,您应该编写一个公开 SparkContext 的插件。使用插件的启动和停止挂钩启动和停止上下文。
这应该足以解决问题,重要的是使用 val 而不是 var。
object SparkContextKeeper {
val conf = new SparkConf().setAppName("SparkApp")
val context= new SparkContext(conf)
val sqlContext = new SQLContext(context)
}