我有一个简单的问题。我想将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.key
和tranformfoIT.key
对于邮件是相同的。
但是我的加入无法正常工作,因为我得到了:
KStream类型的方法join(KTable,ValueJoiner)不适用于参数 (KStream,(值,位置--{})“
我不知道如何解决它。
希望你能帮助我。
答案 0 :(得分:0)
要加入两个KStream
,还需要通过JoinWindows
参数提供一个加入窗口。比较:
https://docs.confluent.io/current/streams/developer-guide/dsl-api.html#kstream-kstream-join
由于缺少第三个JoinWindows
参数,编译器认为您要调用join(KTable,...)
而不是join(KStream,...)
且类型显然不兼容。