Я получаю логи в формате 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");