Apache kafka Kafka流左连接未生成所需结果

Apache kafka Kafka流左连接未生成所需结果,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我有一个带有userClick的KStream,使用userID作为键,还有一个KTable包含用户详细信息,也使用userID作为键。KStream和KTable都有一些分区,使用相同的分区策略和键 当我在这两个点击事件之间使用左连接时,大多数点击事件都与用户详细信息不匹配,有一些匹配。但是,当我用GlobalKTable更改KTable时,这些缺少的匹配项将消失,所有所需的用户单击都包含用户详细信息 什么会导致这个问题? 加入KStream和GlobalKTable时使用KeyValueMa

我有一个带有userClick的KStream,使用userID作为键,还有一个KTable包含用户详细信息,也使用userID作为键。KStreamKTable都有一些分区,使用相同的分区策略和键

当我在这两个点击事件之间使用左连接时,大多数点击事件都与用户详细信息不匹配,有一些匹配。但是,当我用GlobalKTable更改KTable时,这些缺少的匹配项将消失,所有所需的用户单击都包含用户详细信息

什么会导致这个问题? 加入KStreamGlobalKTable时使用KeyValueMapper是否解决了KStreamKtable加入时的问题?如果是这样,解决办法是什么

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

  • 在加入KStream和GlobalKTable时使用KeyValueMapper是否解决了KStream到Ktable join中的问题

    在我看来,如果我们使用GlobalKTable,那么我们将失去Kafka在用户表上扩展的能力

  • 什么会导致这个问题? 您能调试一些用户数据未被丰富的用户ID情况吗?然后检查
    单击流
    用户表
    的用户ID分区号


  • 1.是的,使用globalKTable解决了这个问题,是的,我不想使用globalKTable来扩展。2.结合KTable的情况,非强化用户是匿名用户,因此这是意料之中的,我如何在Kafka Streams中获取分区号?@YamYamm这取决于您的分区策略,如果您使用默认策略,则可以使用此
    org.apache.Kafka.common.utils.utils.toPositive(utils.murrur2(key.getBytes())%n部分
    重复的