加入两个不同KStream的值

时间:2017-06-15 16:20:30

标签: apache-kafka apache-kafka-streams

所以我有两个不同的KStream,如此:

流1 :( String密钥,Object value1)

流2 :( String密钥,Object value2)

我想加入他们,以便最终得到一个看起来像(Object value1,Object value2)的流。

最干净的方法是什么?

1 个答案:

答案 0 :(得分:2)

一种有效的方法是连接两个流,使得结果流的值是包含两个原始值的容器类。然后,映射流以将值从容器中取出,并使用其中一个作为键。

代码:

KStream<String, Object> stream1;
KStream<String, Object> stream2;

KStream<Object, Object> joinedStream = stream1
        .join(stream2, (value1, value2) -> new MyValueContainer(value1, value2))
        .map((key, container) -> new KeyValue<Object, Object>(container.getValue1(), container.getValue2()));