Медленное извлечение данных из базы данных Spark Cache VS

Мы представили Spark Cache для управления данными в памяти в нашем продукте, потому что агрессивная работа с удаленными базами данных, где размер данных Огромен (БОЛЬШИЕ ДАННЫЕ), занимала слишком много времени.

Прямо сейчас мы заметили, что после загрузки данных в spark ответ еще медленнее, чем прямой запрос к исходному источнику (удаленная база данных).

Мы используем sparkSQL для извлечения данных, и тот же запрос возвращается намного раньше из удаленной БД с данными, где кеш Spark с одним узлом на том же компьютере сильно отстает.

Любое руководство будет оценено.

Пример запроса со снимками пользовательского интерфейса Spark:

SELECT column1, SUM(column2) FROM tableName WHERE column2 > 200 GROUP BY column1 ORDER BY column1

Данные загружены на 100 % в памяти Spark. См. изображение
На это ушло 15 минут. загружать результаты из Spark. см. изображение

Где кэш Spark содержит около 50 000 записи. И Машина, на которой тестировался запрос, имеет 16 ядер ЦП с памятью 64 ГБ.

Мой вопрос: 50 000 записей - это ничто, почему это занимает так много минут, а не доли миллисекунд. Где все делается на локальной машине.


person Waseem Akhtar    schedule 02.07.2015    source источник


Ответы (1)


Прежде всего проверьте, кэшируется ли набор данных на 100% (например, в пользовательском интерфейсе Spark). Если нет, Spark должен получить некоторые данные удаленно или с диска и объединить их с данными в памяти.

Во-вторых, Spark, вероятно, не так быстр, как выделенная база данных, поэтому передача результата из очень быстрой базы данных по сети может быть просто быстрее, чем позволить механизму общего назначения вычислить результат, особенно если база данных работает на одной машине.

person Marius Soutier    schedule 02.07.2015
comment
я обновил исходный пост и добавил больше объяснений (со снимками экрана), поэтому, если у вас есть время прочитать... пожалуйста, посмотрите... любые рекомендации будут оценены... - person Waseem Akhtar; 03.07.2015
comment
Кэшируете ли вы результат вашего SQL-запроса или только загруженные данные? Можете ли вы попробовать запрос без ORDER BY? - person Marius Soutier; 03.07.2015
comment
Во-первых, данные уже кэшированы и не кэшируются снова (результаты запроса), потому что я могу больше не использовать эти результаты. Во-вторых, я удалил ORDER BY из запроса, после чего время расчета заданий сократилось до 2 минут, в результате чего задание было выполнено за 12 минут, что все еще слишком медленно, если сравнивать его с обычным извлечением данных из базы данных. .. - person Waseem Akhtar; 03.07.2015
comment
Также, как я вижу в Spark-UI, количество разделов равно 128, означает ли это, что каждый запрос на выборку выполняется в каждом разделе, а затем берется объединение, которое замедляет поиск всех данных? - person Waseem Akhtar; 03.07.2015