Необходимо ли вызывать sparkContext.stop () между последовательными запусками в процессе PySpark? - PullRequest
0 голосов
/ 06 октября 2018

У меня есть процесс PySpark, который извлекает запросы запросов из очереди, выполняет их через Spark, а затем записывает их в какое-то местоположение.

Все это выполняется с использованием одного SparkContext / SQLContext.

Может ли вызов stop в контексте между запросами оказать негативное влияние на кластер / приложение (использование памяти, нечастая сборка мусора, накопление временных файлов и т. Д.)?

Я заметил, что в моих меньших кластерах использование временных файлов быстро заполняется без очистки каталога "SPARK_LOCAL_DIRS".

Для кластеров с большим дисковым пространством и большим количеством оперативной памяти, я замечаю, что кластер редко (раз в месяц или около того) сталкивается с ошибкой spark gc overhead limit exceeded и зависает.

Грубый обзор кода.Примечание: sc.stop() никогда не вызывается.

sc = SparkContext(conf=conf)
sql = SQLContext(sc)

while(jobs.hasNext():
   conf = jobs.next()
   df = sql.read.options(**conf).load()
   results = df.groupBy(col("foo")).aggs(count("*"))
   sql.write.options(**conf).save()
   pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...