Spark Streaming中的窗口?

dex*_*ter 6 apache-spark spark-streaming

在火花流中,我们收到的DStream是一批RDD.那么窗口如何进一步帮助.

根据我的理解,它也批量RDD.

如果我错了,请纠正我(Spark Streaming新手).

Mar*_*ier 13

一批中的记录数由批处理间隔确定.窗口将使批次数保持在窗口大小范围内,这就是窗口大小必须是批处理间隔的倍数的原因.然后,您的操作将在多个批次上运行,并且对于每个新批次,窗口将向前移动,丢弃较旧的批次.

关键是在流式传输中,属于一起的数据不一定同时到达,尤其是在低批量间隔时.使用Windows,您基本上可以追溯到时间.

但请注意,您的作业仍然以指定的批处理间隔运行,因此它将以与以前相同的速度生成输出,但同时查看更多数据.您还将多次查看相同的数据!

迈克尔·诺尔(Michael Noll)有一篇很好的博客文章,更详细地解释了这一点:http://www.michael-noll.com/blog/2013/01/18/implementing-real-time-trending-topics-in-storm/.

更新:

您可以增加批处理间隔,但随后您的作业处理速度也会变慢,即仅每10秒创建一次输出而不是2.您还可以在计算的一部分上放置一个窗口,而批处理间隔会影响所有内容.以结帐reduceByKeyAndWindow为例.


Ara*_*mar 5

批处理间隔:

•流式计算 - >连续的批量计算系列 - >对小批量数据进行操作

•Spark Steaming - >从多个来源接收数据 - >将其分成小批量 - >以固定时间间隔创建新批次

•每个时间间隔的开始 - >创建新批次 - >在间隔期间到达的任何数据都将添加到批次中.

•每个输入批次形成一个RDD

窗口持续时间:合并多个批次的结果
滑动持续时间:控制新DStream计算结果的频率

示例1:批处理间隔的源DStream = 10秒想要创建最后30秒(或最后3批)的滑动窗口 - >窗口持续时间为30秒

滑动持续时间(默认为批处理间隔)控制新DStream计算结果的频率.

示例2:如果我们的源DStream的批处理间隔为10秒,并且只想在每隔一个批次计算我们的窗口,我们将滑动间隔设置为20秒