我已经混合了Java/Scala项目。有在Java中实现的Quartz作业,并使用一些Scala类。这些类应该使用相同的SparkContext实例,所以我实现的东西,应该是单身,看起来像这样:如何在斯卡拉实现一个真正的Singleton
object SparkContextLoader {
var hasSC = false
var sc:Any = 0
def getSC(workers):SparkContext={
if (!hasSC) {
val sparkConf = new SparkConf().setMaster("local[" + workers + "]").setAppName("SparkApp")
sc = new SparkContext(sparkConf)
hasSC = true
}
return sc.asInstanceOf[SparkContext]
}
从两个不同的作业调用SparkContextLoader始终创建这是不允许的新SparkContext实例。
为什么Scala对象不像单身人士?
是用java写的石英作业吗?您是否回顾了如何在java代码中引用scala对象? – heavyhorse
同样你使用var而不是val来代替SparkContext – heavyhorse
可能的重复[如何在Java中使用Scala单例对象?](http://stackoverflow.com/questions/12284028/how-cani-i-使用java中的一个单一对象的对象) – 4e6