Spark Streaming reduceByKeyAndWindow 示例
Spark Streaming reduceByKeyAndWindow example
来自 https://spark.apache.org/docs/latest/streaming-programming-guide.html#window-operations 它说 reduceByKeyAndWindow
"Return a new single-element stream, created by aggregating elements in the stream over a sliding interval using func"
给出的示例是,如果我们想要在过去 30 秒的数据中每 10 秒生成一次字数统计。
我感到困惑的部分是 reduceByKeyAndWindow
究竟是如何工作的。因为一个 windowed stream 是由多个 RDD 组成的。在这种情况下,难道 reduceByKeyAndWindow
只是 return 一串 RDD 而不是一个 RDD?
Spark Streaming 是一个基于微批处理的流媒体库。这意味着流式数据根据称为批间隔的时间片分为批次。每个批次都被转换成一个 RDD,这个连续的 RDD 流表示为 DStream。
有时候我们需要每隔m秒就知道最后n秒发生了什么。举个简单的例子,假设批处理间隔是 10 秒,我们需要知道每 30 秒过去 60 秒发生了什么。这里 60 秒称为 window 长度和 30 秒幻灯片间隔。假设前 6 批是 A、B、C、D、E、F,它们是第一个 window 的一部分。 30 秒后,第二个 window 将形成,其中包含 D、E、F、G、H、I。如您所见,第一个和第二个之间共有 3 个批次 window。
关于 window 需要记住的一件事是 Spark 在内存中保留整个 window。在第一个 window 中,它将使用联合运算符将 RDD A 到 F 组合起来以创建一个大的 RDD。这将占用 6 倍的内存,如果那是你的 need.So 在 ereduce key by window 一旦将数据统一到一个 rdd 中,它应用 reduce by key 和 return dstream 每个滑动间隔。
来自 https://spark.apache.org/docs/latest/streaming-programming-guide.html#window-operations 它说 reduceByKeyAndWindow
"Return a new single-element stream, created by aggregating elements in the stream over a sliding interval using func"
给出的示例是,如果我们想要在过去 30 秒的数据中每 10 秒生成一次字数统计。
我感到困惑的部分是 reduceByKeyAndWindow
究竟是如何工作的。因为一个 windowed stream 是由多个 RDD 组成的。在这种情况下,难道 reduceByKeyAndWindow
只是 return 一串 RDD 而不是一个 RDD?
Spark Streaming 是一个基于微批处理的流媒体库。这意味着流式数据根据称为批间隔的时间片分为批次。每个批次都被转换成一个 RDD,这个连续的 RDD 流表示为 DStream。
有时候我们需要每隔m秒就知道最后n秒发生了什么。举个简单的例子,假设批处理间隔是 10 秒,我们需要知道每 30 秒过去 60 秒发生了什么。这里 60 秒称为 window 长度和 30 秒幻灯片间隔。假设前 6 批是 A、B、C、D、E、F,它们是第一个 window 的一部分。 30 秒后,第二个 window 将形成,其中包含 D、E、F、G、H、I。如您所见,第一个和第二个之间共有 3 个批次 window。
关于 window 需要记住的一件事是 Spark 在内存中保留整个 window。在第一个 window 中,它将使用联合运算符将 RDD A 到 F 组合起来以创建一个大的 RDD。这将占用 6 倍的内存,如果那是你的 need.So 在 ereduce key by window 一旦将数据统一到一个 rdd 中,它应用 reduce by key 和 return dstream 每个滑动间隔。