Kafka Join 2 Streams(Kafka 1.0.1)

时间:2018-08-24 18:24:49

标签: java join apache-kafka apache-kafka-streams

我有一个简单的问题。我想将2个KStream放在同一个键上,并以GenericRecord作为值:

final KStream<String, GenericRecord> obs = builder.stream("Observations");
final KStream<String, GenericRecord> foI = builder.stream("FeaturesOfInterest");

final KStream<String, GenericRecord> transformfoIT = foIT
    .map((key, value) -> KeyValue.pair(value.get("Observation").toString(), value)); 

final KStream<String, GenericRecord> merged = obsT.join(
    transformfoIT,
    (value, location) -> {
        value.put("FeatureOfInterest", location);
        System.out.println();
        return value;

    });

tranfsfromfoIT就是这样,因此请正确设置按键。因此,obs.keytranformfoIT.key对于邮件是相同的。

但是我的加入无法正常工作,因为我得到了:

  

KStream类型的方法join(KTable,ValueJoiner)不适用于参数    (KStream,(值,位置--{})“

我不知道如何解决它。

希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

要加入两个KStream,还需要通过JoinWindows参数提供一个加入窗口。比较:

https://docs.confluent.io/current/streams/developer-guide/dsl-api.html#kstream-kstream-join

由于缺少第三个JoinWindows参数,编译器认为您要调用join(KTable,...)而不是join(KStream,...)且类型显然不兼容。