本文介绍了KeyError异常:SparkConf初始化过程中SPARK_HOME的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个新手的火花,我想运行在命令行的Python脚本。我已经测试了交互和pyspark它的工作原理。我在尝试创建SC时,这个错误:

 文件test.py,10号线,上述<&模块GT;
    conf=(SparkConf().setMaster('local').setAppName('a').setSparkHome('/home/dirk/spark-1.4.1-bin-hadoop2.6/bin'))
  文件/home/dirk/spark-1.4.1-bin-hadoop2.6/python/pyspark/conf.py,线路104,在__init__
    SparkContext._ensure_initialized()
  文件/home/dirk/spark-1.4.1-bin-hadoop2.6/python/pyspark/context.py线229,在_ensure_initialized
    SparkContext._gateway =网关或launch_gateway()
  文件/home/dirk/spark-1.4.1-bin-hadoop2.6/python/pyspark/java_gateway.py48行,在launch_gateway
    SPARK_HOME = os.environ [SPARK_HOME]
  文件/usr/lib/python2.7/UserDict.py23行,在__getitem__
    引发KeyError异常(键)
KeyError异常:SPARK_HOME


解决方案

好像这里有两个问题。

第一个是你使用的路径。 SPARK_HOME 应指向星火安装的根目录因此,在你的情况下,也许应该是 /home/dirk/spark-1.4.1-bin -hadoop2.6 不是 /home/dirk/spark-1.4.1-bin-hadoop2.6/bin

第二个问题是一个方式,您如何使用 setSparkHome 。如果检查a文档字符串其目标是

SparkConf constructor assumes that SPARK_HOME on master is already set. It calls pyspark.context.SparkContext._ensure_initialized which calls pyspark.java_gateway.launch_gateway, which tries to acccess SPARK_HOME and fails.

To deal with this you should set SPARK_HOME before you create SparkConf.

import os
os.environ["SPARK_HOME"] = "/home/dirk/spark-1.4.1-bin-hadoop2.6"
conf = (SparkConf().setMaster('local').setAppName('a'))

这篇关于KeyError异常:SparkConf初始化过程中SPARK_HOME的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-03 16:59