2015-01-09 1 views
1

Я хочу использовать SPARK SQL. Я обнаружил, что производительность очень плохая.Производительность Spark SQL очень плохая

В своем первом решении: , когда каждый SQL-запрос приходит, загрузки данных из Hbase объекта к dataRDD, затем зарегистрировать этот dataRDD в SQLcontext. наконец-то искробежал SQL-запрос. По-видимому, решение очень плохое, потому что ему нужно каждый раз загружать данные.

Итак, я улучшил первое решение.
В моем втором решении не учитывайте обновления данных в базе данных и вставки:
Когда приложение запускается, загрузите текущие данные из HBASE entity to a dataRDD, named cachedDataRDD.
Регистрация cachedDataRDD в SQLcontext
Когда каждый SQL-запрос приходит, выполните искровой SQL-запрос. Производительность очень хорошая.

Но некоторые субъекты должны учитывать обновления и вставки.
Итак, я изменил базу решений на втором решении.

В третьем решении необходимо учитывать обновление данных Hbase и вставляет:
При запуске приложения, загружать текущие данные из HBASE entity to a dataRDD, named cachedDataRDD.
Когда SQL запрос приходит, нагрузка the new updates and inserts data to another dataRDD, named newDataRDD.
Тогда set cachedDataRDD = cachedDataRDD.union(dataRDD);
Регистрация cachedDataRDD в SQLcontext
наконец выполнить искровой SQL запрос.
Но я обнаружил, что преобразование объединения вызовет действие сбора для получения результата запроса очень медленно. Гораздо медленнее, чем запрос hbase api.

Есть ли способ настроить третье решение?
Обычно при каких условиях лучше использовать искру SQL?
Является ли какой-либо хороший вариант использования искра SQL?
Спасибо

+1

Пожалуйста, разместите соответствующий код, чтобы мы могли видеть, что именно вы делаете. – climbage

ответ

0

Рассмотрите возможность создания новой таблицы для newDataRDD и выполните UNION на стороне Spark SQL. Так, например, вместо unioning ДРРА, сделайте следующее:

SELECT * FROM data 
UNION 
SELECT * FROM newData 

Это должно предоставить больше информации для оптимизатора запросов и надеюсь, поможет сделать запрос быстрее.

Смежные вопросы