2016-07-14 95 views
2

內運行腳本,我可以通過鍵入pyspark外殼

pyspark script.py 

運行我的python + pyspark腳本從UNIX命令行,但我怎麼從pyspark外殼內運行script.py?這似乎是一個基本問題,但我無法在任何地方找到答案。我試圖

execfile('script.py') 

但我得到一個錯誤,其中包括:

ValueError: Cannot run multiple SparkContexts at once 
+0

嘗試'subprocess.call'(https://docs.python.org/3/library/subprocess.html#subprocess.call)。我的理解是'execfile'嘗試在同一個Python實例中評估文件,而使用'subprocess'模塊可以產生另一個Python和PySpark實例,沒有任何衝突。 – KartikKannapur

+0

謝謝你的提示。在使我的代碼可執行並添加一個chmod後,我能夠以這種方式運行代碼。但運行後,我無法訪問代碼中的變量。所以它與在UNIX中運行'pyspark script.py'幾乎相同。 – user3433489

+0

是的,除非你將它們變成另一個變量或者將它們保存在一些數據結構中,否則你將無法訪問這些變量。 'subprocess'只會幫你調用另一個spark程序。你可以嘗試類似'subprocess.Popen'和'stdout = PIPE'的方法 – KartikKannapur

回答

5

可能從script.py試圖創建一個新的變量SparkContext來的錯誤?

當您啓動pyspark交互式客戶端通常說: SparkContext available as sc, HiveContext available as sqlContext.

如果你的腳本文件中包含sc = SparkContext(),也許嘗試註釋掉它。