Spark MapWithState для управления состоянием сеанса - PullRequest
0 голосов
/ 20 мая 2018

Я работаю над сценарием использования, когда мне нужно постоянно собирать и обрабатывать информацию для текущих пользовательских сессий на своих смартфонах.Приложение для смартфона связывается с сервером и на протяжении всего сеанса отправляет на сервер связанные с сеансом параметры.Приложение обычно выдает метрики сеанса каждые 15-20 секунд.Типичный сеанс длится 15-20 минут, но может продолжаться и до 1-2 часов.Метрики сеансов должны быть доступны на информационной панели, которая извлекает метрики не только для текущих сеансов, но и для хронологических сеансов (последние 30 дней)

Я использую потоковую передачу Spark с функциональностью MapWithState для управления состоянием сеанса.Я продолжаю загружать обновленную информацию о состоянии во внешнюю базу данных после каждой партии свечей.В настоящее время панель мониторинга запрашивает только внешнюю базу данных.

Я беспокоюсь о производительности такой системы, так как сбой базы данных становится слишком большим, когда система находится под большой нагрузкой.Последняя информация о сеансе должна быть доступна на панели инструментов (строгое требование бизнеса).Какие могут быть улучшения, над которыми я могу работать?У Spark есть концепция JDBC-сервера.Могу ли я использовать это как-нибудь?Если да, мне придется переключаться между базой данных (для исторических сессий) и Spark (для текущих / недавних сессий).
К вашему сведению: я не могу позволить себе использовать структурированную потоковую передачу Spark, поскольку в моем случае управление состоянием довольно сложное.

...