it-swarm.dev

Perché SparkContext si chiude a caso e come lo riavvii da Zeppelin?

Sto lavorando in Zeppelin scrivendo query spark-sql e talvolta improvvisamente comincio a ricevere questo errore (dopo aver cambiato codice):

Cannot call methods on a stopped SparkContext.

Quindi l'output dice più in basso:

The currently active SparkContext was created at:

(No active SparkContext.)

Questo ovviamente non ha senso. Si tratta di un bug in Zeppelin? O sto facendo qualcosa di sbagliato? Come posso riavviare SparkContext?

Grazie

14
The Puma

Ho affrontato questo problema un paio di volte. 

Se si imposta il master come filato-client, potrebbe essere dovuto al blocco/riavvio di Resource Manager, il processo dell'interprete potrebbe essere ancora in esecuzione ma il Contesto Spark (che è un'applicazione Yarn) non esiste più. 

È possibile verificare se Spark Context è ancora in esecuzione consultando l'interfaccia Web di Resource Manager e verificare se è presente un'applicazione denominata Zeppelin in esecuzione.

A volte il riavvio del processo dell'interprete dall'interno di Zeppelin (scheda dell'interprete -> spark -> restart) risolverà il problema.

Altre volte è necessario:

  • uccidere il processo dell'interprete Spark dalla riga di comando
  • rimuovere il file PID Interpreter Spark
  • e la prossima volta che inizierai un paragrafo inizierà un nuovo contesto di scintille
14
user1314742

Sto affrontando lo stesso problema nell'esecuzione di più lavori in PySpark . Sembra che in Spark 2.0.0, con SparkSession, quando chiamo spark.stop() SparkSession chiami la seguente traccia:

# SparkSession 
self._sc.stop()
# SparkContext.stop()
self._jsc = None

Quindi, quando provo a creare un nuovo lavoro con un nuovo SparkContext, SparkSession restituisce lo stesso SparkContext di prima con self.jsc = None

Ho risolto impostando SparkSession._instantiatedContext = None dopo spark.stop() forzando SparkSession a creare un new SparkContext la prossima volta che richiedo.

Non è l'opzione migliore, ma nel frattempo sta risolvendo il mio problema.

7
Franzi

Ho notato questo problema di più quando eseguo comandi pyspark anche con dichiarazioni di variabili banali che l'esecuzione di una cella si blocca nello stato di esecuzione. Come accennato in precedenza da user1314742, solo uccidere il relativo PID risolve questo problema per me. 

per esempio.:

ps -ef | grep zeppelin

È qui che il riavvio dell'interprete Spark e il riavvio del notebook zeppelin non risolvono il problema. Immagino perché non può controllare appeso PID stesso.

0