Kafka Streams左联接未产生所需结果

时间:2020-03-09 08:57:59

标签: apache-kafka apache-kafka-streams

我有一个带有userClick的 KStream ,并使用userID作为密钥,还有一个 KTable ,其中也包含使用UserID作为密钥的用户详细信息。 KStream KTable 都具有一定数量的分区,使用相同的分区策略并使用相同的键。

当我在这两个大多数单击事件之间使用左联接时,与用户详细信息不匹配时,会有一些匹配。但是,当我将 KTable 更改为 GlobalKTable 时,这些丢失的匹配项消失了,所有必需的用户点击都充满了用户详细信息。

什么会导致此问题? 加入 KStream GlobalKTable 时使用KeyValueMapper是否可以解决 KStream Ktable 联接中的问题?如果可以的话,怎么解决?

编辑:UserId是一个压缩主题,由Confluent .net客户端生成,我已将默认分区策略更改为murmur2(Java客户端的默认配置)。

1 个答案:

答案 0 :(得分:0)

  1. 在联接KStream和GlobalKTable时使用KeyValueMapper是否可以解决KStream与Ktable联接中的问题?

    IMO,如果我们使用GlobalKTable,则将失去Kafka在用户表上扩展的能力。

  2. 什么会导致此问题? 您可以调试一些用户ID不足的情况吗?然后检查click streamuser table的用户ID分区号。