【发布时间】:2017-01-25 15:52:28
【问题描述】:
我想以窗口方式对基于 ID 的数据流进行重复数据删除。我们收到的流有并且我们想要在 N 小时时间窗口内删除匹配的数据。一种直接的方法是使用外部密钥库(BigTable 或类似的东西),我们在其中查找密钥并在需要时写入,但我们的 qps 非常大,使得维护这样的服务非常困难。我想出的另一种方法是在一个时间窗口内分组,这样一个时间窗口内用户的所有数据都属于同一个组,然后在每个组中,我们使用一个单独的密钥存储服务来查找键重复。所以,我对这种方法有几个问题
[1] 如果我运行 groupBy 转换,是否可以保证每个组将在同一个从站中处理?如果有保证,我们可以按 userid 分组,然后在每个组内比较每个用户的 sessionid
[2] 如果可行,我的下一个问题是我们是否可以在运行该作业的每台从机中运行此类其他服务 - 在上面的示例中,我希望运行一个本地 Redis,它可以然后每个小组也可以使用它来查找或写入 ID。
这个想法似乎与 Dataflow 应该做的不同,但我相信这样的用例应该很常见 - 所以如果有更好的模型来解决这个问题,我也很期待。考虑到我们拥有的数据量,我们基本上希望尽可能避免外部查找。
【问题讨论】: