如何将KStream转换为另一个KStream?由于我的流中有多个转换,因此无法在配置中为DEFAULT_VALUE_SERDE_CLASS_CONFIG定义一个公共值。
我有一个用例,其中我从Kafka中读取json并根据JSON的少量属性进行一些处理,所有这些ClassA和ClassB都是中间的简单普通Java pojos。
final KStream<String, User> stream1 = builder.stream(inputTopic, Consumed.with(Serdes.String(), userSerde))
final KStream<String, ClassA> stream2 = stream1.map((k, v) -> new KeyValue<>(v.getId(), convertToClassA(v))))
final KStream<String, ClassB> stream3 = stream2.map((k, v) -> new KeyValue<>(v.getId(), convertToClassB(v))))
final KStream<String, Integer> stream3 = stream3.groupByKey().aggregate(...)
kTbl.toStream().to(outputTopic, Produced.with(Serdes.String(), Serdes.Integer()));
错误消息:
Caused by: org.apache.kafka.streams.errors.StreamsException:
A serializer (key: org.apache.kafka.common.serialization.ByteArraySerializer / value: org.apache.kafka.common.serialization.ByteArraySerializer)
is not compatible to the actual key or value type
(key type: java.lang.String / value type: io.confluent.examples.streams.model.User).
Change the default Serdes in StreamConfig or provide correct Serdes via method parameters.