Как Spark обычно решает проблемы
Spark - это крупномасштабный механизм распределенных вычислений, основной целью которого является передача вычислений к данным и решение проблем параллельного использования операций с памятью в виденасколько это возможно.
Как правило, вы просто загружаете все свои данные в наборы данных или кадры данных (например, таблицы SQL), а затем пишете псевдо-SQL для решения вашей проблемы.
записи клиентов будут просто строками в ваших различных таблицах.Spark будет ждать, пока вы укажете шаг вывода (запись в файл / db / etc), и в этот момент он сгенерирует оптимизированный план запросов для выполнения ваших операций самым умным способом, который он знает.
Scaling Spark
Если он слишком медленный или дает сбой, вы обычно масштабируете, предоставляя spark больше ядер, больше памяти, больше исполнителей и более разумно разделяя ваши данные (разделы являются единицами параллелизма; sparkSQL использует 200 по умолчанию).Spark предназначен для работы на кластере компьютеров, достаточно больших для одновременного решения ваших проблем.Например, мы успешно обрабатываем миллиарды строк одновременно в кластере из 8 узлов.
Если у вас нет реального кластера или кластера, достаточно большого для решения вашей проблемы, вы можете выполнить пакетные вычисления, которыеЭто хорошо;но общий подход был бы аналогичным.
Специальные библиотеки
Существуют специальные библиотеки для работы с графами (GraphX), машинного обучения и специальные алгоритмические библиотеки;но не похоже, что вам нужны такие вещи.