如何在Spark Streaming中保存和使用变量?

时间:2016-07-18 02:30:34

标签: apache-spark spark-streaming

我有三个商家,名为 a,b,c ,它们将在一个火花流媒体应用程序中处理。

所有商家都依赖于b1b2,一次完成所有商家后,我需要更改b1b2的值。也就是说,在最后一个商业完成之前,我必须更改b1b2的值。也许最后一个完成的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()
    }
}

1 个答案:

答案 0 :(得分:0)

如果您需要在节点之间共享变量,则需要使用Spark variable broadcasting如果您在spark steaming作业中使用检查点,则需要懒惰地初始化这些变量see example here