【问题标题】:How to troubleshoot 'pyspark' is not recognized... error on Windows?如何解决“pyspark”无法识别... Windows 上的错误?
【发布时间】:2018-07-15 09:20:33
【问题描述】:

我已经尝试在我的 Windows 10 机器上安装 Spark (pyspark) 已经两周了,现在我意识到我需要你的帮助。

当我尝试在命令提示符中启动“pyspark”时,我仍然收到以下错误:

问题

'pyspark' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

对我来说,这暗示了路径/环境变量存在问题,但我找不到问题的根源。

我的行动

我尝试了多个教程,但我发现最好的是 Michael Galarnyk 的教程。我一步一步跟着他的教程:

  • 已安装 Java
  • 已安装 Anaconda
  • 从官方网站下载了 Spark 2.3.1(我相应地更改了命令,因为 Michael 的教程使用了不同的版本)。我在 cmd 提示符下按照教程移动了它:

    mv C:\Users\patri\Downloads\spark-2.3.1-bin-hadoop2.7.tgz C:\opt\spark\spark-2.3.1-bin-hadoop2.7.tgz
    

    然后我解压它:

    gzip -d spark-2.3.1-bin-hadoop2.7.tgz
    

    tar xvf spark-2.3.1-bin-hadoop2.7.tar
    
  • Github 下载 Hadoop 2.7.1:

    curl -k -L -o winutils.exe https://github.com/steveloughran/winutils/raw/master/hadoop-2.7.1/bin/winutils.exe?raw=true
    
  • 相应地设置我的环境变量:

    setx SPARK_HOME C:\opt\spark\spark-2.3.1-bin-hadoop2.7
    setx HADOOP_HOME C:\opt\spark\spark-2.3.1-bin-hadoop2.7
    setx PYSPARK_DRIVER_PYTHON jupyter
    setx PYSPARK_DRIVER_PYTHON_OPTS notebook
    

    然后将 C:\opt\spark\spark-2.3.1-bin-hadoop2.7\bin 添加到我的路径变量中。我的环境用户变量现在如下所示: Current Environmental Variables

这些操作应该可以解决问题,但是当我运行pyspark --master local[2] 时,我仍然从上面得到错误。您能否使用上述信息帮助追踪此错误?

检查

我在命令提示符中运行了几次检查以验证以下内容:

  • Java 已安装
  • Anaconda 已安装
  • pip 已安装
  • Python 已安装

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    我通过将变量设置为“系统变量”而不是“用户变量”解决了这个问题。 注意

    1. 在我的情况下,从命令行设置变量会导致“用户变量”,因此我必须使用高级设置 GUI 将值输入为“系统变量”
    2. 您可能希望排除任何安装问题,在这种情况下尝试 cd 进入 C:\opt\spark\spark-2.3.1-bin-hadoop2.7\bin 并运行 pyspark master local[2](确保 winutils. exe在那里);如果这不起作用,那么您还有其他问题,而不仅仅是 env 变量

    【讨论】:

    • 非常感谢您的回复!确实从用户变量更改为系统变量改变了它,但是现在我收到以下错误:“系统找不到指定的路径”。即使当我手动检查“python/conda/java 等”时它告诉我它们在那里。我用谷歌搜索了这个错误,stackoverflow 表明它不是来自downloading the whole distribution,但我是按照教程这样做的。关于如何解决这个问题的任何想法?
    • 你能试试 findspark 吗,如下所述:github.com/minrk/findspark?同时,您能否接受此答案,因为它解决了问题的确切问题?
    • 感谢您的包裹,这个接缝很有希望。当我尝试按照ReadMefindspark.init() 中的建议运行它时,会返回一个超出范围的错误:IndexError: list index out of rangefindspark.find() 有效,所以我尝试了 findspark.init(findspark.find()) 但没有运气。
    【解决方案2】:

    按照我的博客中解释的给定步骤将解决您的问题-

    如何在 Windows 上设置 PySpark https://beasparky.blogspot.com/2020/05/how-to-setup-pyspark-in-windows.html

    为 Spark 设置环境路径。

    Go to "Advanced System Settings" and set below paths
    JAVA_HOME="C:\Program Files\Java\jdk1.8.0_181"
    HADOOP_HOME="C:\spark-2.4.0-bin-hadoop2.7"
    SPARK_HOME="C:\spark-2.4.0-bin-hadoop2.7"
    Also, add their bin path into the PATH system variable
    

    【讨论】:

    • 感谢您的贡献。您能总结一下这篇博文中最重要的步骤吗?链接在未来往往会改变或消失......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多