我有一个场景,我通过从kafka主题中读取数据来创建Kafka KStream。 KStream记录的键为null,值为{{一个json对象}}
null: { "ID":"1", "name":"XDFER"}
null: { "ID":"1", "name":"TRAFD"}
真实姓名存储在GlobalKTable中为:
XDFER : "john"
TRAFD : "albert"
我想要执行数据丰富化,以便最终结果是:
null: { "ID":"1", "name":"john"}
null: { "ID":"1", "name":"albert"}
我开始阅读有关Kafka Stream应用程序的信息,在每个教程/示例中,数据丰富都是通过比较KStream和GlobalKTable的键来完成的。以我为例,我需要将KStream记录的值与GlobalKTable中的键进行比较。如何实现此目标的任何想法或示例。
答案 0 :(得分:2)
具有null
键或null
值的流的输入记录将被忽略,并且不会触发联接。
因此,您需要重新设置流的密钥,以便可以将名称用作密钥。
stream.selectKey(v-> v.get("name"))
重新输入密钥后,便可以使用GlobalKTable加入流。
您可以在此处阅读详细的行为: