У меня есть база данных MySQL с большими таблицами (~4-20G) и сервер Tableau для аналитиков. Запросы с Tableau работают слишком медленно. Я хочу между ними поставить Spark SQL, чтобы из MySQL делать только SELECT, а вся обработка будет в Spark.
Есть ли в этом смысл? И если есть, хватит ли одного кластера Spark?
IMO Spark Cluster, состоящий из единственного узла, не дает никаких преимуществ кроме Spark API и сопутствующих библиотек: Spark SQL, Spark ML, etc.
Вся "прелесть" обработки данных в Spark Cluster в возможности параллельной и распределенной обработки огромных массивов данных, которые не помещаются в память одного сервера. Разумеется существуют накладные расходы при работе со Spark. Я когда-то сравнивал скорость несложной обработки данных на одном узле Spark Cluster, используя Spark SQL и Pandas - на одном и том же железе. Pandas оказался почти в 10 раз быстрее. Поэтому я рассматривал использование Spark только если у вас есть реальная необходимость параллельной и распределенной обработки данных и если у вас есть соответствующее железо - с 3+ узлами кластера.
PS большинство функций из Spark SQL уже реализованы в MySQL, поэтому вы можете попробовать сделать все на стороне MySQL обычными запросами - это может сэкономить часть времени чтения и передачи данных.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей