从其他文件导入时,PyCharm无法找到“SPARK_HOME”

时间:2016-04-14 06:58:57

标签: python-2.7 apache-spark pyspark

我有两个文件。

  

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'

1 个答案:

答案 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

注意:

  1. 在上面的bashrc代码中,我已将SPARK_HOME值设为/opt/spark,您可以指定保存spark文件夹的位置(从网站下载的文件夹)。

  2. 我还在使用python3你可以在bashrc中将它改为python如果你使用的是python 2. +版本

  3. 我正在使用Ipython,以便在运行时轻松进行测试,例如加载数据一次并多次测试代码。如果您使用普通的旧文本编辑器,请告诉我相应的更新bashrc。