API Kafka Streams: я присоединяюсь к двум KStreams из empmodel

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 не объединяются

1 ответ

Если вы хотите присоединиться к двум KStreams Вы должны убедиться, что оба имеют одинаковое количество разделов. (см. блок "Примечание" в http://docs.confluent.io/current/streams/developer-guide.html)

Если вы используете Кафку v0.10.1+перераспределение произойдет автоматически (см. http://docs.confluent.io/current/streams/upgrade-guide.html).

Для Кафки v0.10.0.x у вас есть два варианта:

  1. убедитесь, что исходные темы ввода имеют одинаковое количество разделов
  2. или добавить вызов .through("my-repartitioning-topic") к одному из KStreamс до объединения. Вам нужно создать тему "my-repartioning-topic" с правильным количеством разделов (т. е. с тем же количеством разделов, что и второй KStreamисходная тема ввода) перед запуском приложения Streams
Другие вопросы по тегам