我有一个Kafka主题,其中包含针对多个不同用户的多个用户信息事件。 我试图弄清楚如何使用值中的多个字段将这些汇总在一起。
例如:
输入主题:
1:{"SSN":"123456"}
2:{"twitterHandle":"elvis"}
3:{"SSN":"123456","twitterHandle":"elvis"}
4:{"SSN":"123456"}
5:{"SSN":"000000"}
6:{"twitterHandle":"foo"}
7:{"SSN":"000000","twitterHandle":"foo"}
8:{"SSN":"000000"}
我想要一个输出主题(汇总):
{"SSN":"123456","twitterHandle":"elvis"}
{"SSN":"000000","twitterHandle":"foo"}
如何使用Kafka Streams实现此目的? 我可以根据输入主题创建KStream并将其转换为KTable以获得输出主题吗?
更新: 该主题包含来自多个不同用户的事件。用户标识符(SSN,twitterHandle)不固定。用户可能还有其他ID
答案 0 :(得分:0)
如果您一味想要删除消息1和2并保留消息3,则可以使用使用者拦截器。
拦截器将盲目解析json消息,检查消息是否同时存在两个键(而不是null),然后成功地将消息提前发送,否则不发送。在这种情况下,您不需要kstream应用。消费消息时只需要使用一个拦截器类。
但是,如果您只希望缝合1和2而在它们之间没有任何公共密钥,那么我认为那是不可能的,因为我们不知道哪个SSN需要与哪个twitter处理合并。
让我知道我是否可以通过其他任何方式提供帮助。