Может быть, посмотрите на getOrCreate и newSession , вы можете сначала остановить текущую, а затем создать новую из конфигурации, так что вам не придется делать Pythonуровень проверки.
# Stop whatever you are getting here
SparkSession.builder.getOrCreate().stop()
# New session with your config
spark = SparkSession.builder.config(conf=conf).newSession()
sc = spark.sparkContext
Теперь первая часть кажется неэффективной (если не было сессии, она будет создана, а затем уничтожена), не знаю, какие накладные расходы это вызывает.
edit: Или потяните sc
наружу и проверьте, назначено ли оно
sc = None
def init_spark(query=None):
global sc
if sc is not None:
sc.stop()
...
sc = pyspark.SparkContext(conf=conf)
...