2016-07-14 16 views
2

Ich kann durch EingabeSkript ausführen aus pyspark Shell

pyspark script.py 

Aber wie ich laufe script.py aus der pyspark Shell meinen Python + pyspark Skript aus der Unix-Kommandozeile ausführen? Das scheint eine elementare Frage zu sein, aber ich kann die Antwort nirgends finden. Ich habe versucht,

execfile('script.py') 

Aber ich erhalte eine Fehlermeldung, die enthält:

ValueError: Cannot run multiple SparkContexts at once 
+0

Versuchen Sie 'subprocess.call' (https://docs.python.org/3/library/subprocess.html#subprocess.call). Ich verstehe, dass 'execfile' versucht, die Datei in der gleichen Python-Instanz auszuwerten, während mit dem 'subprocess'-Modul eine weitere Instanz von Python und PySpark erzeugt werden kann, ohne dass ein Konflikt auftritt. – KartikKannapur

+0

Vielen Dank für den Tipp. Nachdem ich meinen Code ausführbar gemacht und einen Chmod hinzugefügt habe, kann ich den Code auf diese Weise ausführen. Aber nachdem es ausgeführt wird, kann ich nicht auf die Variablen im Code zugreifen. Es ist also fast dasselbe wie "pyspark script.py" in Unix auszuführen. – user3433489

+0

Ja, Sie hätten keinen Zugriff auf die Variablen, wenn Sie sie nicht in eine andere Variable pipen oder in einer Datenstruktur persistieren. 'subprocess' hilft Ihnen nur, ein anderes Spark-Programm aufzurufen. Sie könnten etwas ähnliches wie 'subprocess.Popen' mit' stdout = PIPE' versuchen. – KartikKannapur

Antwort

5

konnte der Fehler kommen aus script.py versuchen, eine neue SparkContext Variable zu erstellen?

Wenn Sie den pyspark interaktiven Client starten Sie es sagt in der Regel: SparkContext available as sc, HiveContext available as sqlContext.

Wenn Ihre Skriptdatei sc = SparkContext() enthält, vielleicht ist es versuchen, zu kommentieren.

Verwandte Themen