Я работаю над приложением для «рендеринга больших данных (пространственных данных)». С помощью Spark Streaming + Spark SQL + WebSocket я могу отображать предварительно определенные запросы на панели управления. Но я хочу получать данные с интерактивными запросами и специальными запросами.Cassandra + Spark для анализа в реальном времени
Для этого я пытаюсь реализовать его с помощью «Spark Streaming + Cassandra». Эти запросы требовали агрегации и фильтрации на огромном количестве данных.
Я новичок в Кассандре и Спарк, поэтому я путаюсь о ниже approachs, который будет лучше \ быстрее:
- Спарк Streaming -> Фильтрация (Спарк) -> Сохранить в Кассандре -> Интерактивный запрос -> UI (Dashboard)
- Спарк Streaming -> Фильтрация (Спарк) -> Сохранить в Кассандре -> Спарк SQL -> Интерактивный запрос -> UI (Dashboard)
Will Cassandra быть достаточно быстро, чтобы дать результат в настоящее время ? Или я должен создать RDD из Cassandra для выполнения интерактивных запросов по нему.
Один из запроса:
"SELECT * FROM PERFORMANCE.GEONAMES A INNER JOIN
(SELECT max(GEONAMEID) AS MAPINFO_ID FROM PERFORMANCE.GEONAMES
where longitude between %LL_LONG% and %UR_LONG%
and latitude between %LL_LAT% and %UR_LAT%
and %WHERE_CLAUSE% GROUP BY LEFT(QUADKEY, %QUAD_TREE_LEVEL%) )
AS B ON A.GEONAMEID = B.MAPINFO_ID"
Все входы или предложения будут оценены. Спасибо,
Спасибо @doanduyhai за предложение вторичного индекса SASI, это действительно сыграло огромную роль.
Производительность будет очень сильно зависеть от дизайна ваших таблиц и количества строк, которые нужно прочитать для ответа на один запрос. Если вы оптимизируете путь для визуализации пользовательского интерфейса, имеет смысл написать данные в Кассандре в форме, которая даст вам необходимую информацию с минимальными показаниями. Я не думаю, что есть общий ответ, не глядя на конкретные требования приложения. – maasg