Dstream 入门:WordCount
-
需求: 使用
netcat
工具向9999
端口不断发送数据,通过Spark Streaming
读取端口数据并统计不同单词出现的次数。 -
在项目中添加依赖:
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>2.1.1</version> </dependency>
-
编写代码:
import org.apache.spark.SparkConf import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream} import org.apache.spark.streaming.{Seconds, StreamingContext} object StreamWordCount { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("StreamingWordCount").setMaster("local[*]") // 1.创建 SparkStreaming 的入口对象 val streamingContext = new StreamingContext(conf, Seconds(5)) // 2.创建一个 DStream val input: ReceiverInputDStream[String] = streamingContext.socketTextStream("localhost", 9999) // 3.进行 WordCount val output: DStream[(String, Int)] = input.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_) // 4.输出结果 println("*********************") output.print() // 5.启动:开始接收数据并计算 streamingContext.start() // 6.等待计算结束(手动退出 OR 出现异常)后退出主程序 streamingContext.awaitTermination() } }
-
运行
4.1 先打开
9999
端口
4.2 启动程序4.3 输入单词
4.4 程序输出结果