pyspark外壳
问题描述:
内运行脚本,我可以通过键入pyspark外壳
pyspark script.py
运行我的python + pyspark脚本从UNIX命令行,但我怎么从pyspark外壳内运行script.py?这似乎是一个基本问题,但我无法在任何地方找到答案。我试图
execfile('script.py')
但我得到一个错误,其中包括:
ValueError: Cannot run multiple SparkContexts at once
答
可能从script.py
试图创建一个新的变量SparkContext来的错误?
当您启动pyspark交互式客户端通常说: SparkContext available as sc, HiveContext available as sqlContext.
如果你的脚本文件中包含sc = SparkContext()
,也许尝试注释掉它。
尝试'subprocess.call'(https://docs.python.org/3/library/subprocess.html#subprocess.call)。我的理解是'execfile'尝试在同一个Python实例中评估文件,而使用'subprocess'模块可以产生另一个Python和PySpark实例,没有任何冲突。 – KartikKannapur
谢谢你的提示。在使我的代码可执行并添加一个chmod后,我能够以这种方式运行代码。但运行后,我无法访问代码中的变量。所以它与在UNIX中运行'pyspark script.py'几乎相同。 – user3433489
是的,除非你将它们变成另一个变量或者将它们保存在一些数据结构中,否则你将无法访问这些变量。 'subprocess'只会帮你调用另一个spark程序。你可以尝试类似'subprocess.Popen'和'stdout = PIPE'的方法 – KartikKannapur