开启zookeeper,kafka,生产者,
$ bin/kafka-console-producer.sh --broker-list ip:9092 --topic 主题名
//创建sparkConf
val conf: SparkConf = new SparkConf().setAppName("kafka_receiver").setMaster("local[4]")
//创建sparkcontext
val sc: SparkContext = new SparkContext(conf)
//设置日志输出级别
sc.setLogLevel("WARN")
//创建StreamingContext
val ssc: StreamingContext = new StreamingContext(sc,Seconds(5))
//检查点
ssc.checkpoint("./kafka-receiver")
//receiver方式:一个接收线程---》一个topic中的分区
/* val stream = (1 to 3).map(x => {
KafkaUtils.createStream(ssc,"ip:2181","group01",Map("spark_kafka1" -> 1))
})
val inputStream = ssc.union(stream)*/
val inputstream = KafkaUtils.createStream(ssc, "虚拟机ip:2181", "group_01", Map("检测的主题" -> 1))
val result = inputstream.map(tuple => tuple._2).flatMap(_.split(" ")).map((_,1)).updateStateByKey(updateFunc)
result.print()
ssc.start()
ssc.awaitTermination()
}
def updateFunc(aa:Seq[Int],bb:Option[Int]): Option[Int] ={
Some(aa.sum + bb.getOrElse(0))
}