学习Kafka Streams,尝试在5分钟的窗口中加入两个流(Json值)。我的理解是使用相同的键来匹配连接条件。如果我的理解是正确的,就像钥匙只能加入一样,对吧?如果是这样,我如何加入json值。即Stream1: Key=a, value={a,b,c}. Stream2: Key=a, value={x} and key=a, value={y}. Expected o/p: {a,b,c,x} and {a,b,c,y}.
要实现这一点,我的ValueJoiner应该如何。帮助我。我的示例代码:
KStream<String, JsonNode> resultStream = stream1.leftJoin(stream2,
new ValueJoiner<JsonNode, JsonNode, JsonNode>() {
@Override
public JsonNode apply(JsonNode value1, JsonNode value2) {
if (value1 != null && value2 != null) {
return value1;
}
return null;
}
}, JoinWindows.of(TimeUnit.SECONDS.toMillis(20)), Joined.with(Serdes.String(), /* key */
jsonSerde, /* left value */
jsonSerde) /* right value */
);
答案 0 :(得分:1)
您对联接如何工作的理解是正确的(假设记录时间戳不同于联接窗口大小)。
要操作JsonNodes,只需搜索互联网:How to modify JsonNode in Java?