我有三个商家,名为 a,b,c ,它们将在一个火花流媒体应用程序中处理。
所有商家都依赖于b1
和b2
,一次完成所有商家后,我需要更改b1
和b2
的值。也就是说,在最后一个商业完成之前,我必须更改b1
和b2
的值。也许最后一个完成的bessiness是 a 或 b 或 c 。怎么做?
object Variables extends Serializable{
var b1 = true
var b2 = false
}
object test{
def main(args: Array[String]){
val sc = new SparkContext
val sec = 3
val ssc = new StreamingContext(sc, Seconds(sec))
val input = ssc.socketTextStream("192.168.41.55", 12345)
// a business
input.transform(/*I need use b1,b2 in here*/).saveAsTextFiles("")
// b business
input.transform(/*I need use b1,b2 in here*/).saveAsTextFiles("")
// c business
input.transform(/*I need use b1,b2 in here*/).saveAsTextFiles("")
ssc.start()
ssc.awaitTermination()
}
}
答案 0 :(得分:0)
如果您需要在节点之间共享变量,则需要使用Spark variable broadcasting如果您在spark steaming作业中使用检查点,则需要懒惰地初始化这些变量see example here