本节课讲解Spark Streaming中一个非常重要的内容:状态管理。为了说明这个状态管理,我们拿两个具体的方法updateStateByKey和mapWithState来说明Spark Streaming到底如何实现状态管理的。整个Spark Streaming按照Batch Duration划分Job,但是有时候我们想计算过去一小时,或者过去1天,或者过去一周的数据,在这么长的大于Batch Duration的时间实现符合我们业务的操作,不可避免的一定要发生的事情是进行状态维护。
我们的Spark Streaming在每个Batch Duration会产生一个Job,Job里面都是RDD,我们现在面临的一个问题就是:对于每个Batch Duration中的RDD,怎么对它的状态进行维护?例如updateStateByKey 计算一整天的商品的点击量或者一整天的商品排名,这个时候就需要类似updateStateByKey和mapWithState帮助你完成核心的步骤。
Spark本身博大精深,在Spark中可以看到IT界的大多数的内容,例如:通过Spark去研究JVM,通过Spark去研究分布式,通过Spark去研究机器学习、图计算这些内容,通过Spark也可以去研究架构设计,通过Spark也可以研究很多软件工程的内容。所以我们以Spark为载体可以做非常多的事情。
updateStateByKey和mapWithState 可不可以在Dstream中找到这2个方法?在Dstream中找不到。updateStateByKey和mapWithState 都是针对Key-Value的类型的数据进行操作,都是Pair类型的,跟我们前面的RDD是