我对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分钟?这是怎么回事?我迷路了,请帮帮我。
1条答案
按热度按时间6ovsh4lw1#
你可以看到
DStream
作为一个RDD[RDD[T]]
. 每五分钟,一个新的RDD
将使用过去5分钟内收集的所有数据进行示例化。你就可以处理这个了RDD
就像你对任何人一样RDD
. 您有一些额外的方法允许您在窗口上计算结果(每个窗口包含有限数量的RDD
s) 是的。将变换应用于DStream
,转换将应用于所有子对象-RDD
s。下面是一个应用程序时发生的情况的示例
map
到DStream
.