在另外一篇《SparkStreaming的入门级程序:WordCount》文章中,只是统计每一个批次的数据,是不带状态的单词计数程序,使用的是reduceByKey()方法,它只能统计当前批次的单词个数,而不会累加上一个批次的单词个数;而带有状态的单词计数程序会累加上个批次的单词个数,它使用的则是updateStateByKey()方法。
在pom.xml文件中引入一下依赖:
<dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.10.6</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.10</artifactId> <version>1.6.2</version> </dependency> </dependencies>
StateFulSteamingWordCount.scala代码如下:
package streams.test import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream} import org.apache.spark.streaming.{Seconds, StreamingContext} import org.