Kafka聚合:分组密钥更改时出现的问题

时间:2019-05-22 14:51:33

标签: apache-kafka apache-kafka-streams

我们使用kafka KTable进行汇总,以下是我们在输入中收到的数据类型 输入数据-交易明细(交易ID,状态,类别,金额等)

我们根据以下内容对以上内容进行分组 分组密钥-(状态,类别)

应用逻辑

Grouped Stream. Aggregate(() -> new Instance(), (key, newVal, aggVal) - > addAmount(newVal). (key, oldVal, aggVal) - > removeAmount(oldVal));

比方说,我们得到的数据流如下(我想要的交易,状态,类别,金额)

  

1-1,待处理,现金,10 //(待处理,现金)-10总计值

     

2-2,待处理,现金,20 //(待处理,现金)-30

     

3-3,实际,卡片,15 //(实际,卡片)-15

     

4-1.待处理,卡片,9 //(待处理,现金)-30,(待处理,卡片)-9---这是我们遇到问题的地方

在#4中,虽然更新了同一transactionId 1上的内容,但是分组密钥发生了更改(从现金到卡),现在由于分组已更改,因此它不调用removeAmoutn()方法,而仅调用addAmount()方法。

关于如何解决此问题的任何想法,如果分组发生变化,它也应注意较早的汇总数据。

我在这里找到了类似的用例 https://stackoverflow.com/a/42685866/2699756

但不确定执行了哪些操作来解决此问题。

0 个答案:

没有答案