Spark Streaming reduceByKeyAndWindow示例

AlwaysNull:

https://spark.apache.org/docs/latest/streaming-programming-guide.html#window-operations中说,reduceByKeyAndWindow“返回新的单元素流,该流是通过使用以下间隔将流中的元素聚合在一起而创建的func”

给出的示例是,如果我们想在数据的最后30秒(每10秒)中生成单词计数。

我对此感到困惑的部分是确切的reduceByKeyAndWindow工作方式。因为窗口流由多个RDD组成。在这种情况下,会不会reduceByKeyAndWindow只返回一组RDD而不是一个RDD?

sai pradeep kumar kotha:

Spark Streaming是基于微批处理的流库。这就是说,流数据根据称为批处理间隔的时间片分为几批。每个批处理都转换为RDD,并且该连续的RDD流表示为DStream。

有时我们需要知道每m秒最后n秒发生了什么。举一个简单的例子,假设批处理间隔为10秒,我们需要每30秒知道最近60秒发生了什么。这里60秒称为窗口长度,滑动间隔为30秒。假设前6个批次是A,B,C,D,E,F,它们是第一个窗口的一部分。30秒后,将形成第二个窗口,该窗口将具有D,E,F,G,H,I。如您所见,第一个和第二个窗口共有3个批次。

关于窗口,要记住的一件事是Spark保留了内存中的整个窗口。在第一个窗口中,它将使用联合运算符将RDD A到F组合起来以创建一个大的RDD。这将需要6倍的内存,如果您需要的话就可以了。因此,在按窗口ereduce键时,一旦将数据取消存储到rdd,它将应用reduce by键并在每个滑动间隔返回dstream。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章