хранение промежуточных данных в топологии шторма - PullRequest
0 голосов
/ 28 мая 2018

Я читаю данные из 2 тем кафки.Который может быть описан как:

Topic1 data content: VehicleRegistrationNo, Timestamp, Location Topic2 data content: VehicleRegistrationNo, Timestamp, Speed

Мне нужно объединить эти 2 сообщения на основе ближайшей отметки времени в обоих и вывести кортеж как сообщение VehicleRegistrationNo, Timestamp, Speed, Location.Я читаю эту тему через 2 носика S1 и S2.Затем болт MergeS1andS2 получает данные от этих носиков и работает следующим образом:

if (message from S1): save present message from S1 along with 2 previous messages (3 consecutive locations) to LocationHashMap elseif (message from S2): get locations details from LocationHashmap and merge speed for same Vehicle with location info, then send details to next bolt as tuple

Я знаю, что HashMap не является эффективным способом хранения данных в многоузловом режиме.Поэтому я прочитал о Trident и Redis для хранения промежуточных данных.Что я должен использовать для хранения промежуточных данных в этом сенарио, которые могут работать в распределенной топологии.

1 Ответ

0 голосов
/ 01 июня 2018

Любая база данных no-sql сделает свое дело.Выберите ключ, который однозначно идентифицирует кортеж, независимо от того, из какой темы идет.Логика будет выглядеть примерно так:

  • Попробуйте найти кортеж из базы данных.
  • Если кортеж не существует в базе данных, сохраните кортеж, полученный из темы, в базу данных.
  • Если кортеж существует, объедините содержимое кортежа базы данных и кортежа темы и сохраните полученный кортежобратно в базу данных (перезаписывая содержимое предыдущего кортежа в базе данных)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...