我有两个流。一个是事件流,另一个是数据库更新流。我想用从DB更新流构建的信息来丰富事件流。
事件流非常庞大,使用5个字段进行分区。这给了我很好的分配。 DB流不那么笨拙,并且使用两个字段进行分区。我目前正在使用两个公共字段连接两个流,并使用flapMap来丰富第一个流。 flatMap运算符使用ValueState来维护状态,该状态由两个公共字段自动键入。
我发现事件流中的负载在两个公共字段方面倾向于倾斜。这会导致在flapMap实例中的负载均衡不均匀,并且一些实例的负载大约是其他实例的10倍。
我在想更好的方法是在所有flatMap实例中广播数据库更新流,然后根据现有的分区方案转发事件流。但问题是因为没有为connect运算符指定键,我不能使用ValueState。
除了实现自定义逻辑以手动提取密钥和更新维护状态之外,还有什么我可以做的吗?
我缺少一种更简单的方法吗?
答案 0 :(得分:0)
您可以使用"{
"coordinates":
[[[
[-91.0759333619999,40.15440933399983],
[-91.066378752,40.154309680999823],
[-91.066282352,40.157927062999832],
[-91.0751007809999,40.157994385999814],
[-91.0758658189999,40.157997289999805],
[-91.075866624,40.157608482999827],
[-91.0758737049999,40.157300970999813],
[-91.0759333619999,40.15440933399983]
]]]
,"type":"MultiPolygon"}"
实现Checkpointed
接口,以检查广播的数据库更新,而不是使用键值状态接口。