apache-spark - Spark 流中批处理间隔,滑动间隔和窗口大小之间的差异

标签 apache-spark spark-streaming

我是新的 Spark 流。我知道窗口大小必须是批处理间隔的倍数。但是滑动间隔如何工作?如果我有3个窗口大小和2个滑动间隔,当我计算说出的字数时,会不会有重叠?还是滑动间隔和批处理间隔应该相同?

最佳答案

Here是文档的链接。

enter image description here

让我们来看一下这些概念:

  • 批处理间隔-以秒为单位的时间,该数据将在调度处理之前收集多长时间。例如,如果您将批处理间隔设置为5秒-Spark Streaming将收集数据5秒钟,然后使用该数据在RDD上进行计算。
  • 窗口大小-在处理之前,RDD中应包含多少历史数据的时间间隔(以秒为单位)。例如,您有1秒的批处理间隔,窗口大小为2-在这种情况下,您将有2个先前批处理的计算每秒被踢出。例如,在时间= 3时,您将在时间= 2和时间= 3时获得批次数据。
  • 滑动间隔-以秒为单位的时间,表示窗口将移动多少。例如,在前面的示例中,滑动间隔为1(因为计算每秒被踢出),例如在时间= 1,时间= 2,时间= 3 ...如果设置滑动间隔= 2,则将在时间= 1,时间= 3,时间= 5 ...上进行计算...

  • 您可以引用上面的图像,其中窗口大小是批处理间隔的3倍,而滑动窗口是批处理间隔的2倍。

    要回答一个问题,为什么窗口和滑动间隔应为批处理间隔的倍数-这是因为否则,您的窗口将在批处理之间结束。

    如果您有3个窗口大小和2个滑动间隔(见图)-是的,您的字数将重叠。基本上,当您需要在有限的时间内计算某些内容时(例如实际新闻或推文之类的东西),而您不需要所有历史数据进行分析时,则使用窗口。

    关于apache-spark - Spark 流中批处理间隔,滑动间隔和窗口大小之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50674262/

    相关文章:

    apache-spark - 在 Apache Hudi 表中写入 Spark DataFrame

    scala - 将行合并到列表中以获得 SPARK 中的相似值

    将 scala 应用程序提交到独立 Spark 集群时出现 java.lang.ClassNotFoundException

    java - 线程 "main"org.apache.spark.SparkException : Only one SparkContext may be running in this JVM (see SPARK-2243) 中的异常

    java - Kafka 主题详细信息未在 Spark 中显示

    scala - Spark Scala 从 rdd.foreachPartition 获取数据

    apache-spark - RDD在内存中保留多长时间?

    apache-spark - 无效字符串插值 : `$$' , `$' ident 或 `$' BlockExpr 预期 -> Spark SQL

    apache-kafka - Spark Streaming 与 Nifi

    scala - 如何将kafka流转换为spark RDD或Spark Dataframe