Kafka Streams流表联接-如果表中不存在键怎么办?

时间:2019-01-14 14:11:27

标签: apache-kafka apache-kafka-streams

在这里的示例中:https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/PageViewRegionExample.java有一个KStream和KTable连接。

在驱动程序https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/PageViewRegionExampleDriver.java中,它将用户发送到用户主题,并将页面视图发送到页面视图主题(用户位于视图内)。

但是,在示例中,我们首先为页面视图主题创建一个KStream,然后为用户配置文件主题创建一个KTable,然后将它们加入。假设应用程序在执行联接之前不只是从两个流中加载每条数据,那么如果出现视图并且用户配置文件尚未保存到表中会发生什么?

1 个答案:

答案 0 :(得分:0)

如果在 stream 中的事件出现之前不会加载KTable,leftJoin在KTable站点上将为null,并且join将不返回joinedValue。

建议是启动Kafka Streams应用程序,将数据加载到KTable(由某些生产者使用)的主题中,然后开始向 stream主题发送事件。

关于加入Kafka Streams的有趣演讲是在Kafka Summit(旧金山,2018年)上进行的,可以找到以下视频:View Video and Slides Zen and the Art of Streaming Joins—The What, When and Why