Распределите симуляцию с большим количеством комбинаций параметров в pyspark на kubernetes - PullRequest
0 голосов
/ 07 января 2020

У нас есть функция python, которая имитирует реальный сценарий, используя небольшой конечный автомат. Эта функция принимает ~ 150 параметров, а также набор данных stati c (~ 600 строк), выполняет моделирование и возвращает набор значений в качестве выходных данных. Мы хотели бы смотреть на это как на черный ящик. Он однопоточный, и на данный момент не стоит оптимизировать это.

Мы хотели бы использовать искру, чтобы распределить выполнение большого числа возможных комбинаций входных параметров (скажем, 50 000 возможных комбинаций). Мы бежим искрой на Кубернетес. Наш текущий эскиз выглядит следующим образом:

  1. Вызов API с запрошенными диапазонами параметров происходит в
  2. , мы рассчитываем все возможные комбинации и сохраняем их в DataFrame
  3. DataFrame, содержащий Строки конфигураций симуляции записываются в файл на S3
  4. . Вызывается spark-submit, код считывает данные stati c и запускает flatMap с комбинациями настроек симуляции и передает их в преобразование. который выполняет UDF
  5. , UDF содержит симуляцию конечного автомата и возвращает результаты
  6. результаты записываются в S3

На основе этого блога обсуждаются интерфейсы искрового ML и этот о различных функциях искры, таких как столбец F или UDF. Мой наставник сказал мне, что с использованием UDF - это почти всегда плохая идея, так как он удерживает scala от правильного графика .

Итак: UDF г / п? другой коллега рекомендовал просто использовать функцию map. Я не уверен, что нужно для того, чтобы спарк мог распределить это среди своих работников, поскольку наш основной алгоритм для него по сути черный ящик, и он вообще не оптимизирует эту часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...