我想知道KTable是否能满足我们的需要。
假设我有一个主题
myTopic
在包含事件的kafka中,我在这个主题上插入了一个kafkastreams应用程序。
我们假设当时
t0
, the
我的主题
包含3个事件:
"key_1": { "col_1": "val_k1_c1_@t0", "col_2": "val_k1_c2_@t0"}
"key_2": { "col_1": "val_k2_c1_@t0", "col_2": "val_k2_c2_@t0"}
"key_3": { "col_1": "val_k3_c1_@t0", "col_3": "val_k3_c3_@t0"}
当时
t1
,与相关的新事件
key_1
被推入
我的主题
:
"key_1": {"col_1": "NEWVAL_k1_c1_@t1", "col_2": "NEWVAL_k1_c2_@t1"}
所以当时
T1
,ktable可以这样表示:
KEY COL_1 COL_2 COL_3
key_1 NEWVAL_k1_c1_@t1 NEWVAL_k1_c2_@t1
key_2 val_k2_c1_@t0 val_k2_c2_@t0
key_3 val_k3_c1_@t0 val_k3_c3_@t0
这是ktable的关键概念:保留给定键的最新值。
现在假设当时
t2
,一个新的事件到来,为了丰富
密钥1
:
"key_1": { "col_3": "val_k1_c3_@t2" }
如果我的理解正确,ktable将失去
col_1
和
col_2
,表格将如下所示:
KEY COL_1 COL_2 COL_3
key_1 val_k1_c3_@t2
key_2 val_k2_c1_@t0 val_k2_c2_@t0
key_3 val_k3_c1_@t0 val_k3_c3_@t0
我理解这个概念了吗?
是否有一种本地方法来合并这些值,使ktable看起来像这样?
KEY COL_1 COL_2 COL_3
key_1 NEWVAL_k1_c1_@t1 NEWVAL_k1_c2_@t1 val_k1_c3_@t2
key_2 val_k2_c1_@t0 val_k2_c2_@t0
key_3 val_k3_c1_@t0 val_k3_c3_@t0