我有一个kafka流,可以完成KTable的缺失值(leftjoin完美地完成)。 但有时,我必须将每个值的连接组合成一个数组,我不知道如何正确地做到这一点。
例如(我带一个家庭):
{father: idFather, mother : idMother, children:[{child: id1},{child: id2}]
我可以与Ktable联系以查找父亲和母亲的名字(加入id)。 但对于孩子们,我不知道如何将每个孩子循环到阵列中(我不知道有多少孩子)。
目前,我为每个孩子创建了新的KStream:
stream.flatMapValues(value -> value.get("children"))
我为每个孩子加入了联盟。
然后我必须groupByKey并减少或聚合我的数据以使用人名重建输入数据。
事实上,它是有效的,但我不确定这是最好的方法,我更愿意避免使用内部kafka存储来进行缩减和聚合操作。
有人有更好的主意吗? 谢谢你的帮助
答案 0 :(得分:1)
方法很合理。
如果您的KTable数据很小,您可以考虑使用GlobalKTable
进行连接。这允许使用来自KStream的非关键字段来查找GlobalKTable
。