Je travaille dans Zeppelin en écrivant des requêtes spark-sql et parfois je commence soudain à avoir cette erreur (après ne pas avoir changé de code):
Cannot call methods on a stopped SparkContext.
Ensuite, la sortie dit plus bas:
The currently active SparkContext was created at:
(No active SparkContext.)
Cela n'a évidemment aucun sens. Est-ce un bug dans Zeppelin? Ou est-ce que je fais quelque chose de mal? Comment puis-je redémarrer le SparkContext?
Je vous remercie
J'ai fait face à ce problème plusieurs fois.
Si vous définissez votre maître en tant que client-fil, cela peut être dû à l'arrêt/au redémarrage de Resource Manager, le processus d'interprétation peut toujours être en cours d'exécution, mais le contexte Spark (qui est une application Yarn) n'existe plus.
Vous pouvez vérifier si Spark Context est toujours en cours d'exécution en consultant l'interface Web de votre gestionnaire de ressources et en vérifiant si une application appelée Zeppelin est en cours d'exécution.
Parfois, le fait de redémarrer le processus d'interprétation depuis Zeppelin (onglet d'interprétation -> spark -> restart) résoudra le problème.
D'autres fois, vous devez:
Je suis confronté au même problème lors de l'exécution de plusieurs tâches dans PySpark . Il semble que dans Spark 2.0.0, avec SparkSession, lorsque j'appelle spark.stop()
, SparkSession appelle la trace suivante:
# SparkSession
self._sc.stop()
# SparkContext.stop()
self._jsc = None
Ensuite, lorsque j'essaie de créer un nouveau travail avec un nouveau SparkContext, SparkSession renvoie le même SparkContext qu'auparavant avec self.jsc = None
.
J'ai résolu le paramètre SparkSession._instantiatedContext = None
après spark.stop()
, forçant SparkSession à créer un new SparkContext lors de la prochaine demande.
Ce n'est pas la meilleure option, mais en attendant, cela résout mon problème.
J'ai remarqué ce problème plus souvent lors de l'exécution de commandes pyspark
, même avec des déclarations de variable triviales indiquant qu'une exécution de cellule est suspendue dans un état d'exécution. Comme mentionné ci-dessus par l'utilisateur 1314742, le simple fait de tuer la variable PID
correspondante résout ce problème pour moi.
par exemple.:
ps -ef | grep zeppelin
C’est ici que le redémarrage de l’interpréteur Spark et du carnet de notes zeppelin ne résolvent pas le problème. Je suppose que parce qu'il ne peut pas contrôler la variable PID
en elle-même.