Kafka中的分组方法



我们有一个用例对多个数据消息进行分组,然后处理它们

示例数据消息

{
"meta": {
"id": "66b3cd0e-6a15-4730-a5c8-71ca6dd601a5",
"userId": "47922F57-2C49-4B0B-A34B-08C9E6A15CC",
},
"data": [
{
"Email": "user1@email.com",
"FirstName": "User 1",
"LastName": "Last 1",
}, 
{
"Email": "user2@email.com",
"FirstName": "User 2",
"LastName": "Last 2",
}, 
]
}

我们不断得到类似的消息与不同的标识符(meta.id+meta.userId)和多个记录在数据数组

我们要做的是基于(meta.id+meta.userId)分组消息,然后处理它们

  • 周期性地,间隔5分钟。
  • 或者如果作为标识符我们得到x Data-records

这个问题可能比较模糊,如果可能的话,我们想知道如何使用Kafka实现这个分组。

你可以使用kafka流来做到这一点,所以基本上你的拓扑结构看起来像这样:

val kStream = streamsBuilder.stream(YOUR_TOPIC, YOUR_SERDES)
kStream.groupBy(k ,v ->v.meta)
.windowedBy(TimeWindows.of(Duration.ofMinutes(5)))

但是您应该知道使用groupBy会导致数据重新分区。你可以在这里找到更多的细节

最新更新