Как определить узкое место в искровом приложении (pyspark)? - PullRequest
0 голосов
/ 17 мая 2019

У меня медленная работа в приложении pyspark. У меня есть функция, которая включает в себя 5 фреймов данных, и есть соединения и соглашения внутри. Когда я вызываю эту функцию только один раз, она запускается успешно. Но когда я вызываю его более одного раза, внутри процесса (только меняя параметр, но объем данных остается неизменным), он не завершается. Это останавливается в некоторой части, которую я не могу идентифицировать. Мой вопрос: как отладить мое искровое приложение, чтобы определить это узкое место?

1 Ответ

0 голосов
/ 18 мая 2019

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

  1. мастер = местный

    Выполнить приложение / конвейер, используя master=local с небольшими наборами данных. Используя эту опцию, я могу запустить приложение Spark, используя мою любимую IDE в локальном рабочий стол и может также использовать опцию отладки.

   spark = SparkSession.builder.appName("MyApp").config("master", "local").getOrCreate()
  1. - клиент в режиме развертывания

    Как только проблемы будут решены и будут работать локально, упакуйте и разверните приложение в edgenode и выполните в режиме client с небольшими наборами данных. Мы можем видеть любые сообщения об ошибках / трассировки стека и т.д. в консоли, если таковые имеются.

  2. - кластер в режиме развертывания

    Теперь выполняется в режиме cluster, с большими / фактическими наборами данных и обновлением настроек для производительности Spark, таких как отсутствие исполнителей, памяти исполнителя и т. Д.

...