apache-spark - Spark 流 - 等待窗口聚合数据?

标签 apache-spark spark-streaming

我的数据格式为 { host |公制|值(value)|时间戳}。我们在世界各地都有主机报告指标。

我对使用窗口操作(比如 1 小时)来处理这样的数据有点困惑。

  • 我可以告诉我的窗口何时启动,还是在应用程序启动时才启动?例如,我想确保聚合当天 11 点以来的所有数据。如果我的窗口从 10:50 开始,我只会得到 10:50-11:50 并错过 10 分钟。

  • 即使窗口完美,数据也可能会延迟到达。

人们如何处理此类问题?他们是否使窗口比需要的大得多,并且只是在每个批处理周期中获取他们关心的数据(某种滑动)?

最佳答案

过去,我在一个大型物联网平台上工作,并通过考虑窗口只是部分计算来解决该问题。我对后端 (Cassandra) 进行了建模,以便为每个窗口接收超过 1 条记录。任何给定窗口的实际值将是为该窗口找到的所有可能部分记录的相加。

因此,完美的窗口将是 1 条记录,分割窗口将是 2 条记录,迟到自然受到支持,但仅接受特定的“年龄”阈值。协调是在读取时完成的。由于该平台的写入量与读取量相比要重几个数量级,因此这是一个很好的折衷方案。

关于apache-spark - Spark 流 - 等待窗口聚合数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783533/

相关文章:

sql - 在 spark 中选择新列作为空字符串

scala - Spark - 如何根据项目评分创建稀疏矩阵

scala - 如何在 HDP(Hortonworks 数据平台)中安装 Scala 库

apache-spark - 在同一个 Spark 结构化流作业中使用两个 WriteStream

java - SparkSession 初始化抛出 ExceptionInInitializerError

java - 如何使用 Java 将 unix 纪元的列转换为 Apache spark DataFrame 中的日期?

python - 如何使用 pyspark 对 RDD 中的值进行分组和计数以返回一个小摘要?

apache-spark - Spark 流 - 由 : org. apache.parquet.io.ParquetDecodingException 引起:无法读取文件中 block 0 中 1 处的值

java - Spark-如何将每n行写入不同的输出文件?

scala - Spark流从Twitter获取数据并保存到Cassandra