设置:
从pubsub读取-> 30s窗口->按用户分组->合并->写入云数据存储
问题:
我看到DataStoreIO writer错误,因为在同一事务中存在具有相似键的对象。
问题:
我想了解在进行分组/组合操作后,管道如何将结果组合到包中。我希望合并后为每个窗口创建捆绑包。但是很显然,一个捆绑包可以包含同一用户出现的两次以上?
捆绑软件的重新执行(重试)会导致这种现象吗?
这个捆绑依赖于跑步者吗?
重复数据删除是一种选择吗?如果是这样,我将如何最好地解决呢?
请注意,我并没有在管道的结尾寻找替代的数据存储编写器,我已经知道我们可以使用其他策略。我只是想了解捆绑是如何发生的。
答案 0 :(得分:1)
您的问题有两个答案。一个特定于您的用例,另一个通常与流中的捆绑/窗口化有关。
特定于您的管道
我假设数据存储区的“密钥”是用户ID?在这种情况下,如果在多个窗口中有来自同一用户的事件,则您的GroupByKey
或Combine
操作将为每对用户+窗口有一个单独的元素。
问题是:您要插入到数据存储中的内容是什么?
很乐意帮助您设计管道以完成所需的工作。在评论中或通过SO聊天与我聊天。
关于数据捆绑的更大问题
捆绑策略因跑步者而异。在Dataflow中,您应考虑以下两个因素:
*-什么时候数据更新会突然跳?具有单个元素且时间戳非常旧且处理非常慢的流可能会长时间保留水印。处理完此元素后,水印可能会跳很多,跳到下一个最旧的元素(Check out this lecture on watermarks ; ))。