Spark SQL 2.3 - медленные результаты поиска для LIKE '% message%' - PullRequest
0 голосов
/ 10 мая 2018

Я получаю логи в формате log4j, обрабатываю их и сохраняю в Spark. Я не в кластерной или многоузловой среде. Использование Spark в качестве приложения с одним узлом. Я только начинающий в искре, изучая концепции, написав приложение. Вместо БД (MySQL) я использую Spark в качестве бэкэнда, так что обработка будет намного быстрее, чем БД (для миллионов записей). Я надеюсь, что это хорошо.

Используя Spark SQL, пытаемся получить записи с помощью запроса ниже.

qry = qry + " error LIKE '%" + errormsg + "%' ";
List<Row> allrows = logDataFrame.filter(qry).collectAsList();

В настоящее время Spark хранит 1 миллион записей. Этот запрос занимает 6 секунд для получения 1000 записей.

Это неправильное использование Spark? Я так не думаю, вот где spark должен обрабатывать записи и извлекать записи как можно быстрее. Пожалуйста, поправьте меня, если я не так понимаю.

Я смущен, почему это так долго, чтобы получить записи.

Мне нужно настроить какие-либо конфигурации на Spark или что-нибудь еще? Пожалуйста, предложите.

Использование моего приложения в режиме ошибки:

SparkContext sc = spark.sparkContext();
sc.setLogLevel("ERROR");

1 Ответ

0 голосов
/ 10 мая 2018

Это неправильное использование Spark?

Это просто мнение, но я бы сказал, что так оно и есть. Похоже, вы ищете либо базу данных с возможностями полнотекстового поиска, либо поисковую систему, а не Spark, которая не предназначена для использования в качестве одного из них.

Несмотря на наличие компонента SQL, он точно не заменит MySQL.

Я так не думаю, вот где спарк должен обрабатывать записи и извлекать записи как можно быстрее.

Это не тот случай использования Spark. Хотя Spark постепенно превращается в потоковый механизм с низкой (er) задержкой, он никогда не был разработан для интерактивных запросов с низкой задержкой. Он в первую очередь оптимизирован для объема, а не для скорости.

Хотя некоторые предикаты, основанные на равенстве, можно оптимизировать с помощью правильного хранилища, такие запросы, как сопоставление строк, должны проверять каждую строку данных, что делает этот процесс очень дорогим.

...