final KStream<String, EmpModel> empModelStream = getMapOperator(empoutStream);
final KStream<String, EmpModel> empModelinput = getMapOperator(inputStream);
// empModelinput.print();
// empModelStream.print();
empModelStream.join(empModelinput, new ValueJoiner<EmpModel, EmpModel, Object>() {
@Override
public Object apply(EmpModel paramV1, EmpModel paramV2) {
System.out.println("Model1 "+paramV1.getKey());
System.out.println("Model2 "+paramV2.getKey());
return paramV1;
}
},JoinWindows.of("2000L"));
我收到错误:
无效的拓扑构建:KSTREAM-MAP-0000000003和KSTREAM-MAP-0000000004不可连接
答案 0 :(得分:3)
如果要加入两个KStreams
,则必须确保两者具有相同数量的分区。 (参见http://docs.confluent.io/current/streams/developer-guide.html#joining-streams中&#34;注意&#34; 框)
如果您使用Kafka v0.10.1+
,则会自动进行重新分区(参见http://docs.confluent.io/current/streams/upgrade-guide.html#auto-repartitioning)。
对于Kafka v0.10.0.x
,您有两种选择:
.through("my-repartitioning-topic")
之一添加对KStream
的调用。在启动Streams应用程序之前,您需要使用正确数量的分区(即与第二个"my-repartioning-topic"
的原始输入主题相同数量的分区)创建主题KStream