我有两个文件。
test.py
from pyspark import SparkContext
from pyspark import SparkConf
from pyspark import SQLContext
class Connection():
conf = SparkConf()
conf.setMaster("local")
conf.setAppName("Remote_Spark_Program - Leschi Plans")
conf.set('spark.executor.instances', 1)
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
print ('all done.')
con = Connection()
test_test.py
from test import Connection
sparkConnect = Connection()
当我运行test.py时,连接成功,但是使用test_test.py,它会给出
引发KeyError(键)
KeyError:'SPARK_HOME'
答案 0 :(得分:1)
KEY_ERROR
或无效,则会出现{p> SPARK_HOME
。因此最好将其添加到bashrc
并检查并重新加载代码。请将此添加到test.py
的顶部
import os
import sys
import pyspark
from pyspark import SparkContext, SparkConf, SQLContext
# Create a variable for our root path
SPARK_HOME = os.environ.get('SPARK_HOME',None)
# Add the PySpark/py4j to the Python Path
sys.path.insert(0, os.path.join(SPARK_HOME, "python", "lib"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python"))
pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
还要在〜/ .bashrc文件的末尾添加它
命令:vim ~/.bashrc
如果您使用的是任何基于Linux的操作系统
# needed for Apache Spark
export SPARK_HOME="/opt/spark"
export IPYTHON="1"
export PYSPARK_PYTHON="/usr/bin/python3"
export PYSPARK_DRIVER_PYTHON="ipython3"
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
export PYTHONPATH="$SPARK_HOME/python/:$PYTHONPATH"
export PYTHONPATH="$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH"
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"
export CLASSPATH="$CLASSPATH:/opt/spark/lib/spark-assembly-1.6.1-hadoop2.6.0.jar
注意:强>
在上面的bashrc代码中,我已将SPARK_HOME值设为/opt/spark
,您可以指定保存spark文件夹的位置(从网站下载的文件夹)。
我还在使用python3
你可以在bashrc中将它改为python
如果你使用的是python 2. +版本
我正在使用Ipython,以便在运行时轻松进行测试,例如加载数据一次并多次测试代码。如果您使用普通的旧文本编辑器,请告诉我相应的更新bashrc。