gpt4 book ai didi

java - Spark Streaming reduceByKeyAndWindow 示例

转载 作者:行者123 更新时间:2023-12-04 01:37:35 25 4
gpt4 key购买 nike

来自 https://spark.apache.org/docs/latest/streaming-programming-guide.html#window-operations它说 reduceByKeyAndWindow “返回一个新的单元素流,它是通过使用 func 在滑动间隔内聚合流中的元素创建的”

给出的示例是,如果我们想要在过去 30 秒的数据中每 10 秒生成一次字数统计。

我感到困惑的部分是 reduceByKeyAndWindow 究竟是如何工作的。因为一个 windowed stream 是由多个 RDD 组成的。在这种情况下,reduceByKeyAndWindow 不会只返回 RDD 流而不是一个 RDD 吗?

最佳答案

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 key by window 中,一旦将数据合并到一个 rdd 中,它就会应用 reduce by key 并在每个滑动间隔返回 dstream。

关于java - Spark Streaming reduceByKeyAndWindow 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49042195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com