spark流和dstream是如何工作的?

iecba09b  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(289)

我对spark很有经验。然而,我第一次学习Spark流,发现它很难理解。很难理解应用程序的流程。例如,以下网站上给出的示例
http://ampcamp.berkeley.edu/3/exercises/realtime-processing-with-spark-streaming.html
第3部分的代码。进一步练习,我们有

val words = statuses.flatMap(status => status.split(" "))
val hashtags = words.filter(word => word.startsWith("#"))
val counts = hashtags.map(tag => (tag, 1))
                         .reduceByKeyAndWindow(_ + _, _ - _, Seconds(60 * 5), Seconds(1))

据推测,它计算的是过去5分钟最流行的twitter散列标签。那么,这是怎么回事。是否有某种隐藏循环每5分钟执行一次?价值是多少 words 以及 hashtags ,每秒钟还是5分钟?这是怎么回事?我迷路了,请帮帮我。

6ovsh4lw

6ovsh4lw1#

你可以看到 DStream 作为一个 RDD[RDD[T]] . 每五分钟,一个新的 RDD 将使用过去5分钟内收集的所有数据进行示例化。你就可以处理这个了 RDD 就像你对任何人一样 RDD . 您有一些额外的方法允许您在窗口上计算结果(每个窗口包含有限数量的 RDD s) 是的。将变换应用于 DStream ,转换将应用于所有子对象- RDD s。
下面是一个应用程序时发生的情况的示例 mapDStream .

val stream: DStream 
                    \ 
                     RDD -- RDD -- RDD
stream.map
          \
           RDD.map -- RDD.map -- RDD.map

相关问题