Использование Apache Spark для быстрых (<5 секунд) вычислений на больших матрицах - PullRequest
0 голосов
/ 10 июля 2019

Моя команда собирается создать приложение, и я исследую некоторые распределенные вычислительные системы.Мое приложение включает в себя запуск вычислений на больших матрицах.Требования следующие:

  1. Можно ожидать, что матрицы будут составлять 50 000 столбцов x 3 миллиона строк.Все значения являются целыми числами (кроме заголовков строк / столбцов).

  2. Приложению необходимо выбрать конкретную строку и рассчитать коэффициент корреляции (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corr.html) длякаждый второй ряд.Это означает 3 миллиона различных вычислений.

  3. Сортированный список коэффициентов корреляции и соответствующие им ключи строк должны быть возвращены менее чем за 5 секунд.

  4. Пользователи в конечном итоге будут запрашивать случайные подмножества строк / столбцов для выполнения вычислений, поэтому предварительный расчет наших коэффициентов невозможен.Это необходимо сделать по запросу.

Можно ли настроить Apache Spark для удовлетворения этих требований?Я бы предпочел управляемое решение, такое как Spark на AWS EMR.

1 Ответ

0 голосов
/ 11 июля 2019

Spark работает быстро, но я сомневаюсь, что вы сможете сэкономить 3 миллиона вычислений менее чем за 5 секунд и добавить их обратно в таблицу (даже в некоторых более дорогих случаях).Кроме того, поскольку данные будут распределены между несколькими работниками, сбор данных будет довольно дорогой операцией.

Я думаю, что вы, возможно, захотите по-другому подойти к дизайну и попробовать запустить свой процесс в кластере.Хотя я должен упомянуть, что на рынке есть несколько решений, которые быстрее Spark.

...