SparkStreaming程序--创建StreamingContext对象的方式
写SparkStreaming程序需要创建StreamingContext对象,创建StreamingContext对象有两种方式:
①.val ssc = new StreamingContext(sc,Durations.Seconds(xxx))
②.val ssc = new StreamingContext(conf,Durations.Seconds(xxx))
1 object StreamingWordCount { 2 def main(args: Array[String]): Unit = { 3 val conf = new SparkConf() 4 conf.setMaster("local[2]") 5 conf.setAppName("streamingwc") 6 val ssc: StreamingContext = new StreamingContext(conf, Durations.seconds(5)) 7 val sc: SparkContext = ssc.sparkContext 8 sc.setLogLevel("Error") 9 10 /** 11 * hello spark 12 * hello java 13 * hello streaming 14 */ 15 val lines: ReceiverInputDStream[String] = ssc.socketTextStream("mynode5",9999) 16 val words: DStream[String] = lines.flatMap(line=>{line.split(" ")}) 17 val pairWords: DStream[(String, Int)] = words.map(word=>{new Tuple2(word,1)}) 18 val result = pairWords.reduceByKey((v1,v2)=>{v1+v2}) 19 result.print() 20 21 ssc.start() 22 ssc.awaitTermination() 23 ssc.stop(false) 24 25 } 26 27 }
备注:
/** * SparkStreaming 读取Socket中的数据进行实时wordcount统计。 * 注意: * 1).nc -lk 9999 在linux中启动一个socke服务器 * 2).本地运行SparkStreaming程序需要设置 local[2] ,如果集群中运行,需要至少两个core * 3).写SparkStreaming程序需要创建StreamingContext对象,创建StreamingContext对象有两种方式: * ①.val ssc = new StreamingContext(sc,Durations.Seconds(xxx)) * ②.val ssc = new StreamingContext(conf,Durations.Seconds(xxx)) * 4).Durations.seconds(5) 代表batchInterval ,我们指定的可以接受的数据延迟度。可以设置:seconds,minutes,milliseconds * 如何设置batchInterval 需要参照webui 调节。 * 5).SparkStreaming 启动之后,不能添加新的代码逻辑。 * 6).SparkStreaming.stop(stopSparkContext = true),在关闭StreamingContext时,需要不需要关闭parkContext对象 * 7).SparkStreaming.stop 之后不能再次调用SparkStreaming.start()重新将程序启动。 * * */