findspark.init() 失败 - 无法正确设置 SPARK_HOME 环境变量

Posted

技术标签:

【中文标题】findspark.init() 失败 - 无法正确设置 SPARK_HOME 环境变量【英文标题】:findspark.init() failing - Cannot get SPARK_HOME environment variables set correctly 【发布时间】:2019-07-02 18:38:24 【问题描述】:

我是使用 Spark 的新手,我正在使用 Jupyter Notebook 在我的本地(Windows)机器上尝试使用 Spark

我一直在学习设置环境变量的几个教程,以及通过 Python 和 cmd 使用多个函数来完成此操作,但我无法让任何介绍性 PySpark 代码工作。

运行时(在 Jupyter Notebook 中,使用 Python)

from pyspark import SparkContext
from pyspark.sql import SQLContext
sc = SparkContext('lcoal', 'Spark SQL') 

from pyspark import SparkContext
from pyspark.sql import SQLContext
sc = SparkContext('C:\spark\spark-2.4.3-bin-hadoop2.7', 'Spark SQL') 

我得到错误:

FileNotFoundError: [WinError 2] The system cannot find the file specified

另外,

我尝试使用 findspark 并遇到了问题:

findspark.init()
OR
findspark.init("C:\spark\spark-2.4.3-bin-hadoop2.7")

我得到错误:

IndexError: list index out of range

关于这个主题的其他帖子让我相信 SPARK_HOME 变量可能设置不正确。

我的环境变量如下: 我的火花是在这里提取的: C:\spark\spark-2.4.3-bin-hadoop2.7

HADOOP_HOME: C:\spark\spark-2.4.3-bin-hadoop2.7 SPARK_HOME: C:\spark\spark-2.4.3-bin-hadoop2.7 JAVA_HOME:C:\Program Files\Java\jdk1.8.0_201

包括 %SPARK_HOME%\bin 在内的所有这些都已添加到我的 PATH 变量中。

最后,当我 cmd > cd %SPARK_HOME% 它正确地将我带到正确的目录 \spark\spark-2.4.3-bin-hadoop2.7

据我所知,我的环境变量没有问题,所以我不确定为什么通过 Juputer notebook 的 pyspark 找不到我的 spark_home(或者这可能不是问题)。

不胜感激!

谢谢!

【问题讨论】:

检查 spark-2.4.3-bin-hadoop2.7 里面是否有 bin 目录。如果它在那里,也将 bin 添加到该路径。也在那里检查 pyspark 。在 Ubuntu 中它是如何定义的。 【参考方案1】:

您似乎已经完成了其余的过程,只需要完成一个步骤。在 Jupyter NB 中,运行以下命令:

import os    
os.environ['SPARK_HOME'] = 'C:\\Users\\user_name\\Desktop\\spark'

它应该将此路径添加到您的环境变量中。您还可以通过在 Jupyter NB 中运行以下命令来检查它是否按预期设置了正确的路径:

%env

for var in os.environ():  
    print(var,':',os.environ[var])

PS。请注意代码的缩进

【讨论】:

以上是关于findspark.init() 失败 - 无法正确设置 SPARK_HOME 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

findspark.init() IndexError: 列表索引超出范围错误

无法设置Pyspark

错误:无法找到 py4j,您的 SPARK_HOME 可能配置不正确

SQLServer无法删除登录名'***',因为该用户当前正处于登录状态解决方法

将groupBy聚合为csv文件后保存pyspark数据帧

无法生成签名的 apk - TaskExecutionException 失败