我的数据格式为 { 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/