Как установить profiler_cls при использовании SparkSession.builder? - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть кодовая база python, которая использует pyspark SparkSession.builder для создания SparkSession.Я нахожусь в точке, где я хочу профилировать код Python, который выполняется.

Если бы я вызывал конструктор SparkContext напрямую, я мог бы передать параметр profiler_cls. Однакос помощью компоновщика, похоже, не существует способа сделать это.Я что-то пропустил?На данный момент это будет значение по умолчанию BasicProfiler, но я хочу использовать https://pypi.org/project/pyspark-flame/.

Любая помощь будет принята с благодарностью.

Урезанная версия кода (удаление лишнихнастройки конфигурации):

SparkSession.builder.master(master).appName(app_name) \
        .config("spark.driver.maxResultSize", "4g") \
        .config("spark.python.profile", "true") \
        .config("spark.python.profile.dump", ".") \
        .getOrCreate()

Я пытаюсь сделать это с помощью компоновщика, а не реализовывать этот код самостоятельно.

1 Ответ

0 голосов
/ 03 марта 2019

Класс Builder имеет недокументированный метод _sparkContext, который позволяет вам указать контекст зажигания для сеанса, поэтому добавление ._sparkContext(SparkContext(profiler_cls=...)) в ваш компоновщик должно работать (хотя я его не тестировал).

Но имейте в виду, что pyspark-flame (и другие профилировщики, использующие возможности профилирования pyspark) могут профилировать только те RDD, которые выполняют код Python на рабочих, тогда как Spark SQL выполняет большую часть тяжелой работы в Java и Scala.В зависимости от вашего приложения и от того, насколько сильно вы полагаетесь на SQL и фреймы данных, вы можете или не можете получать полезные данные из него.

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