pyspark外壳

问题描述:

内运行脚本,我可以通过键入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

可能从script.py试图创建一个新的变量SparkContext来的错误?

当您启动pyspark交互式客户端通常说: SparkContext available as sc, HiveContext available as sqlContext.

如果你的脚本文件中包含sc = SparkContext(),也许尝试注释掉它。