Проектирование конвейера данных в Kafka, KStream или Spark Streaming, Kafka Connect - PullRequest
0 голосов
/ 13 октября 2018

У нас есть случай использования, когда у нас есть устаревшая система, данные которой находятся в MS SQL Server, и для целей обработки данных мы создаем конвейер обработки данных в реальном времени, который находится в стадии POC, со следующими шагами:

  1. Данные извлекаются из MS SQL Server.
  2. Они помещаются в Kafka.
  3. Они используются для выполнения некоторых агрегаций.Поскольку мы хотим сделать это в режиме реального времени, нам нужен некоторый уровень хранения событий или кэширования, где мы можем хранить данные и выполнять некоторые агрегации.
  4. Агрегированный результат сбрасывается в Cassandra.

Насколько я понял, это

  1. Мы можем выбирать между потоками Kafka, Spark Streaming, Flink для агрегации данных в реальном времени

Я несколько завершил Kafka Streams, так какимеет малый вес и имеет возможность хранения событий, которая будет хранить мои входящие данные в RocksDb и все еще исследовать их.

И у меня есть некоторые сомнения, такие как

  1. Если я хочу выполнить некоторую агрегациюна данных, которые уже присутствуют в Cassandra, тогда я могу заполнить или инициализировать данные Cassandra в хранилище событий Kafka и выполнить агрегирование?Или я могу получить его непосредственно из Cassandra в потоковом приложении Kafka, выполнить агрегацию и сбросить в Cassandra?

Я хотел бы знать, как люди справляются с такими сценариями.

ЧтоЯ пришел к выводу: enter image description here

  1. Когда поступит record1 и, так как я могу запросить хранилище Kafka, я буду запрашивать хранилище KTable и проверять, есть ли запись1.Если его нет, то данные извлекаются из Кассандры.Значение входящей записи1 и существующей записи1 Кассандры будет агрегировано в KStream, который автоматически вставит агрегированное значение обратно в хранилище Kafka.

  2. Когда поступает запись2 и в том случае, если она уже присутствует вЗатем в хранилище Kafka это значение и входящее значение используются для агрегирования.

  3. Наконец обновите хранилище Kafka до Cassandra при каждом EOD и очистите хранилище Kafka.

Поток Kafka также можно заменить кэшированием потока Spark и постоянным API, я думаю.

Это разумный способ сделать это?Мне нужно руководство.Есть ли лучший способ сделать то же самое?Я хочу прочитать больше тематических исследований.Если кто-нибудь может поделиться какими-либо ссылками или исправить меня в выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...