我们使用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
但不确定执行了哪些操作来解决此问题。