Я новичок в Apache Storm.
Я пытаюсь разработать систему обработки потоков в реальном времени с использованием Apache Kafka, Storm и ESPER CEP.
Для этого яналичие одного KafkaSpout, который будет отправлять потоки в Bolts (с моими запросами CEP) для фильтрации потока.
Я уже создал топологию и пытаюсь запустить ее в локальном кластере
Проблема в том, что запрос CEP, выполняемый в моих болтах, требует пакетов кортежей для выполнения операций с окнами в потоках.И в моей топологии KafkaSpout отправляет только один кортеж за один раз в Bolts для обработки.Поэтому мой запрос CEP не работает должным образом.
Я использую KafkaSpout по умолчанию в Storm.Можно ли как-то отправить несколько разных кортежей одновременно в Bolts?Некоторые настройки конфигурации могут сделать это, или мне нужно сделать свой собственный KafkaSpout для этого?
Пожалуйста, помогите !!
Моя топология:
TopologyBuilder builder = new TopologyBuilder ();
builder.setSpout ("KafkaSpout", новый KafkaSpout <> (KafkaSpoutConfig.builder ("localhost:" + + 9092, "weatherdata"). SetProp (ConsumerConfig.GROUP_ID_CONFIG, "группа потребителей погоды")) .build ()), 4);
builder.setBolt ("A", новый FeatureSelectionBolt (), 2) .globalGrouping ("KafkaSpout");
builder.setBolt ("B ", новый TrendDetectionBolt (), 2) .shuffleGrouping (" A ")
Я использую 2 болта и один носик.
Мой запрос esper, выполняющийся в болте A, равен
выберите first (e), last (e) из weatherEvent.win:length(3) как e
Здесь я пытаюсь получить первое и последнее событие из окна длины три из потока событий,Но я получаю одно и то же первое и последнее событие, потому что KafkaSpout отправляет только один кортеж за раз.