【问题标题】:The system cannot find the path specified error while running pyspark运行pyspark时系统找不到路径指定错误
【发布时间】:2018-08-26 17:06:47
【问题描述】:

我刚刚下载了 spark-2.3.0-bin-hadoop2.7.tgz。下载后我按照这里提到的步骤pyspark installation for windows 10。我使用评论 bin\pyspark 运行 spark 并收到错误消息

The system cannot find the path specified

附上报错信息的截图

附件是我的 spark bin 文件夹的屏幕截图

我的路径变量的屏幕截图看起来像

我的 Windows 10 系统中有 python 3.6 和 Java“1.8.0_151” 你能建议我如何解决这个问题吗?

【问题讨论】:

标签: windows apache-spark pyspark


【解决方案1】:

您很可能忘记定义 Windows 环境变量,因此 Spark bin 目录位于您的 PATH 环境变量中。

使用 Windows 的常用方法定义以下环境变量。

首先定义一个名为SPARK_HOME的环境变量为C:\spark\spark-2.3.0-bin-hadoop2.7

然后将 %SPARK_HOME%\bin 添加到现有的 PATH 环境变量中,或者如果不存在(不太可能)将 PATH 定义为 %SPARK_HOME%\bin

如果没有指定 PATH 的拼写错误, echo %PATH% 应该为您提供 Spark bin 目录的完全解析路径,即它应该看起来像

C:\spark\spark-2.3.0-bin-hadoop2.7\bin;

如果 PATH 正确,您应该能够在任何目录中键入 pyspark 并且它应该运行。

如果这不能解决问题,可能是pyspark: The system cannot find the path specified 中指定的问题,在这种情况下,此问题是重复的。

【讨论】:

  • 不,我这样做了,在设置路径变量后也重新启动了我的命令提示符,然后使用 pyspark 注释。我在第一篇文章中添加了我的路径变量屏幕截图
【解决方案2】:

更新:在我的情况下,它归结为 JAVA 的错误路径,我让它工作...

我也有同样的问题。我最初是通过pip安装Spark,pyspark运行成功。然后我开始搞乱 Anaconda 更新,它再也没有工作过。任何帮助将不胜感激...

我假设 PATH 已为原作者正确安装。一种检查方法是从命令提示符运行spark-class。如果 PATH 正确,它将在从任意位置运行时返回 Usage: spark-class <class> [<args>]pyspark 的错误来自我追踪到 spark-class2.cmd 中最后几行的一串 .cmd 文件

这可能很愚蠢,但是更改下面显示的最后一段代码会将您从pyspark 收到的错误消息从“系统找不到指定的路径”更改为“命令的语法不正确”。删除整个块会使pyspark 什么都不做。

rem The launcher library prints the command to be executed in a single line suitable for being
rem executed by the batch interpreter. So read all the output of the launcher into a variable.
set LAUNCHER_OUTPUT=%temp%\spark-class-launcher-output-%RANDOM%.txt
"%RUNNER%" -Xmx128m -cp "%LAUNCH_CLASSPATH%" org.apache.spark.launcher.Main 
%* > %LAUNCHER_OUTPUT%
for /f "tokens=*" %%i in (%LAUNCHER_OUTPUT%) do (
  set SPARK_CMD=%%i
)
del %LAUNCHER_OUTPUT%
%SPARK_CMD%

我删除了“del %LAUNCHER_OUTPUT%”并看到生成的文本文件仍然是空的。结果是“%RUNNER%”无法使用 java.exe 找到正确的目录,因为我弄乱了 Java(不是 Spark)的 PATH。

【讨论】:

  • 你能告诉我如何设置 spark-class 吗?我收到的错误消息是 'spark-class' is not recognized as an internal or external command, operable program or batch file.
  • 是的,现在我通过提交命令 spark-class 得到用法:spark-class <class> [<args>]。但在提交 pyspark 命令后仍然得到 The system cannot find the path specified.
  • 尝试从 bin\spark-class2.cmd 中删除 'del %LAUNCHER_OUTPUT%' 并在 C:\Users\~\AppData\Local\Temp 中查找临时文件它应该被称为 'spark -class-launcher-output-####.txt' 并说出类似 'PYSPARK_SUBMIT_ARGS="--name" "PySparkShell" "pyspark-shell" && python' 你将 JDK 安装到哪个文件夹?
  • 我在C:\Users\~\AppData\Local\Temp 中看到我的spark-class-launcher-output-20430 是空的。它显示文件大小为0 KB。JDK 安装在C:\Program Files 下。删除了del %LAUNCHER_OUTPUT% from bin\spark-class2.cmd。请提出建议。
  • 安装的某些组件不喜欢文件路径(程序文件)中的空格。尝试将 Java 重新安装到 C:\Java 或类似的东西中
【解决方案3】:

为此工作了数小时。我的问题是安装 Java 10。我卸载了它并安装了 Java 8,现在 Pyspark 可以工作了。

【讨论】:

    【解决方案4】:

    将 SPARK_HOME 切换为 C:\spark\spark-2.3.0-bin-hadoop2.7 并将 PATH 更改为包含 %SPARK_HOME%\bin 对我来说是成功的。

    最初我的 SPARK_HOME 设置为 C:\spark\spark-2.3.0-bin-hadoop2.7\bin,而 PATH 将其引用为 %SPARK_HOME%

    直接在我的 SPARK_HOME 目录中运行 spark 命令有效,但只运行一次。在最初的成功之后,我注意到你同样的错误,echo %SPARK_HOME% 显示C:\spark\spark-2.3.0-bin-hadoop2.7\bin\.. 我想也许 spark-shell2.cmd 已经编辑它以试图让自己工作,这导致我来到这里。

    【讨论】:

      【解决方案5】:

      我的问题是 JAVA_HOME 指向的是 JRE 文件夹而不是 JDK。确保你照顾好它

      【讨论】:

        【解决方案6】:

        实际上,问题出在JAVA_HOME 环境变量路径上。 JAVA_HOME 路径设置为.../jdk/bin previously

        我为JAVA_HOME 剥离了最后一个/bin 部分,同时将它(/jdk/bin) 保留在系统或环境路径变量(%path%) 中就可以了。

        【讨论】:

        • 这也是我同样问题的原因。奇怪的是java路径已经预定义了java/bin。
        【解决方案7】:

        如果你使用 anaconda 作为窗口。下面的命令可以节省你的时间

        conda install -c conda-forge pyspark
        

        之后重启 anaconda 并启动“jupyter notebook”

        【讨论】:

          【解决方案8】:

          我知道这是一篇旧帖子,但我会添加我的发现以防它对任何人有所帮助。

          这个问题主要是由于 pyspark 文件中的 source "${SPARK_HOME}"/bin/load-spark-env.sh 行。正如你所看到的,它不希望在 SPARK_HOME 中出现“bin”。我所要做的就是从我的 SPARK_HOME 环境变量中删除 'bin' 并且它起作用了(C:\spark\spark-3.0.1-bin-hadoop2.7\binC:\spark\spark-3.0.1-bin-hadoop2.7\)。

          Windows 命令提示符上的错误使它看起来好像无法识别“pyspark”,而真正的问题是它无法找到文件“load-spark-env.sh”。

          【讨论】:

            【解决方案9】:

            对于那些使用 Windows 并仍在尝试的人,解决我的问题是重新安装 Python (3.9) 作为本地用户 (c:\Users\<user>\AppData\Local\Programs\Python) 并定义了两个环境变量 PYSPARK_PYTHONPYSPARK_DRIVER_PYTHONc:\Users\<user>\AppData\Local\Programs\Python\python.exe

            【讨论】:

              【解决方案10】:

              解决安装 Pyspark (Windows) 的问题

              JAVA_HOME 路径不正确

              > pyspark  
              The system cannot find the path specified.
              

              打开系统环境变量:

              rundll32 sysdm.cpl,EditEnvironmentVariables
              

              设置 JAVA_HOME:系统变量 > 新建:

              Variable Name: JAVA_HOME
              Variable Value: C:\Program Files\Java\jdk1.8.0_261
              

              另外,检查 SPARK_HOME 和 HADOOP_HOME 是否设置正确,例如:

              SPARK_HOME=C:\Spark\spark-3.2.0-bin-hadoop3.2
              HADOOP_HOME=C:\Spark\spark-3.2.0-bin-hadoop3.2
              

              重要提示:仔细检查以下内容

              1. 路径存在
              2. 路径不包含bin 文件夹

              Java 版本不正确

              > pyspark
              WARN SparkContext: Another SparkContext is being constructed 
              UserWarning: Failed to initialize Spark session.
              java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.storage.StorageUtils$
              

              确保 JAVA_HOME 设置为 Java 8 (jdk1.8.0)

              winutils 未安装

              > pyspark
              WARN Shell: Did not find winutils.exe
              java.io.FileNotFoundException: Could not locate Hadoop executable
              

              下载winutils.exe并将其复制到您的spark home bin文件夹中

               curl -OutFile C:\Spark\spark-3.2.0-bin-hadoop3.2\bin\winutils.exe -Uri https://github.com/steveloughran/winutils/raw/master/hadoop-3.0.0/bin/winutils.exe
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-03-14
                • 1970-01-01
                • 2020-05-27
                • 2017-02-05
                • 2015-11-28
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多