是否有一种方法可以为Ktable statestore更改日志(groupBy/reduce)定制分区分配?用法是将一个订单的所有订单-项目事件(按订单ID和项目编号)分组在一个分区中。
当前的changelog topic是根据它的键进行分区的,因此一个订单的订单项消息可以驻留在不同的分区中。
分区是由键决定的,正如您所说的。因此,使用map
操作符将键更改为"订单ID和商品编号"的组合
您无法控制更改日志主题的分区。它是硬编码的,并且不使用Partitioner
开头。
如果你有一个输入主题(或通过groupBy
重新分区主题),来自输入分区X的记录将映射到任务X(即状态存储分片X),并使用更改日志主题分区X。
我们需要这种1:1:1:1的映射来保证正确性。如果输入主题分区(和任务)X被重新分配给不同的实例,我们可以通过从changelog主题中读取分区X来恢复状态。