@web3_Venture

System Design задержка ETL перед записью в базу, (Kafka, Spark) как?

Привет, очень простой, но глобальный вопрос.
Допустим нужно считать колво всего просмотров для каждого юзера, но этих просмотров может генерироваться миллионы. Если использовать просто KAFKA sink в базу, то на каждый чих будет происходить в базу UPDATE.
Я ищу такое ETL решение которое умеет делать join,aggregate,window и главное делать вроде задержек: тоесть агрегирует результаты (например с лимитами не больше минуты или не больше 1000 сообщений) и делает только потом ФИНАЛЬНЫЙ FLUSH.

Пример:
image.png
Тут приходят сообщения для каждого юзера на каждый просмотр, потом мы их группируем по юзерID и делаем условие FLUSH (не больше 100 сообщений или не дольше 10 минут), после чего на выходе мы получаем результат всего пару финальных сообщений за эти 10 минут , и потом уже записываем в базу.

Что я нашел, Apache Spark модуль Spark Streaming, где вроде как раз используется при ETL - Batch подход и этот batch можно как раз настраивать лимитами (по времени или размеру batch). Но это только теория подскажите кто точно знает. Но в этой статье https://www.bigdataschool.ru/blog/spark-streaming-... очень ругают Spark Streaming что это старый везде тормозящий подход и уже никто не использует надо пересаживаться на Structured Streaming , но Structured Streaming походу про реалтайм и не делает то что мне нужно.

Если есть ещё какие ETL инструменты для этой задачи , подскажите.
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
@web3_Venture Автор вопроса
Не знаю почему сложность проставилась "простой", ну явно это уровень для высоких ребят )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы