【发布时间】:2021-07-26 17:54:33
【问题描述】:
我正在尝试计算过去 24 小时事件的移动平均值。我很难理解如何使用 Apache Beam 实现计算的“移动”部分。
我的场景如下:
- 给定未绑定的事件流,其中每个事件都有
user和value字段。 - 在我将事件按
user分组以获取每个用户的流之后。 - 计算过去 24 小时内每个用户
value的平均值。如果我手动完成:
- 采用当前时间
- 查找事件时间为
>= now - 24h的事件 - 对于这些事件,平均
value字段以获得单个数字。
- 将计算出的每用户平均值
value汇入数据库表。
这里的动态方面是,当一个事件到期时(时钟向前滴答,事件时间变为< now - 24h),应该重新计算平均值。
我尝试了什么:
- 它不是
FixedWindow,因为它在移动。我不想知道给定日期的每日平均value是多少。我想知道过去 24 小时内value的当前平均值是多少。 - 由于用户随机生成事件,文档表明这可能是
SessionWindow的用例,但我对了解用户行为或查找会话不感兴趣。不确定SessionWindow是否合适,因为它是从事件时间开始的,我正在寻找固定的时钟时间边界。
谁能解释一下这个移动平均线应该如何在 Beam 中实现?
我是 Apache Beam 的新手,刚刚开始。我查看了 Windowing 和 Trigger 文档并查看了排行榜示例。到目前为止,我还没有找到计算移动值的示例。
【问题讨论】:
标签: apache-beam