在windows上的Git Bash中设置Spark shell

在windows上的Git Bash中设置Spark shell,windows,git,apache-spark,pyspark,spark-shell,Windows,Git,Apache Spark,Pyspark,Spark Shell,我从未在mysystem上的任何其他软件中遇到过这个问题。能够在Windows终端/命令提示符和Git Bash中安装和运行所有内容 最近,我开始学习Spark。已安装Spark设置一切JAVA\u HOME、SCALA\u HOME、hadoop winutils文件。sparkshell和pysparkshell都在命令提示符/窗口终端和通过pyspark库在Jupyter中完美运行 spark-3.0.1-bin-hadoop2.7 python 3.8.3 Windows 10 git

我从未在mysystem上的任何其他软件中遇到过这个问题。能够在Windows终端/命令提示符和Git Bash中安装和运行所有内容

最近,我开始学习Spark。已安装Spark设置一切JAVA\u HOME、SCALA\u HOME、hadoop winutils文件。sparkshell和pysparkshell都在命令提示符/窗口终端和通过pyspark库在Jupyter中完美运行

spark-3.0.1-bin-hadoop2.7
python 3.8.3
Windows 10 
git version 2.29.2.windows.2
但我无法为Git Bash(使用管理员权限尝试)找到它。当我尝试运行spark shell或pySpark时,出现以下错误:

Error: Could not find or load main class org.apache.spark.launcher.Main
/c/Spark/spark-3.0.1-bin-hadoop2.7/bin/spark-class: line 96: CMD: bad array subscript
我搜索了解决方案,并在.bashrc或spark-env-sh中找到了设置环境变量的方法。 为pySpark外壳设置以下各项:

   export JAVA_HOME='/c/Program Files/Java/jdk1.8.0_111'
   export SPARK_HOME='/c/Spark/spark-3.0.1-bin-hadoop2.7'
   export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
   export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.9-src.zip:$PYTHONPATH
   export PYSPARK_PYTHON='C:/Users/raman/anaconda3/python'
   export PYSPARK_DRIVER_PYTHON='C:/Users/raman/anaconda3/python'
也没有成功。如果我追溯spark类文件中的错误。因此:

我的问题,

  • 此错误的原因是什么?如何解决
  • 在Git Bash for Windows中设置spark shell是否有明确定义的步骤(在网络上找不到任何实体)
  • 谢谢。

    As,这取决于启动Spark时脚本使用的
    java-cp
    类路径参数

    如果所述脚本以
    #开头/bin/sh
    #/bin/bash
    ,添加一个
    -x
    (例如:
    #!/bin/bash-x


    这将迫使脚本显示执行的每一行,您可以看到有关
    ${CMD[@]}

    的更多信息,我遇到了同样的问题。经过调查,根本原因是无法识别git bash中传递给java命令的类路径

    例如,git bash中的Below命令将不起作用,因为Java命令只将
    /d/spark/jars/*
    作为一个在Windows操作系统中找不到的参数

    java -cp '/d/spark/jars/*' '-Dscala.usejavacp=true' -Xmx1g org.apache.spark.deploy.SparkSubmit --class org.apache.spark.repl.Main --name 'Spark shell' spark-shell
    
    错误:无法找到或加载主类org.apache.spark.launcher.main*

    当我换成这个后,它就工作了

    java -cp 'D:\spark\jars\*' '-Dscala.usejavacp=true' -Xmx1g org.apache.spark.deploy.SparkSubmit --class org.apache.spark.repl.Main --name 'Spark shell' spark-shell
    

    试着从Git Bash专门运行spark-shell.cmd,例如
    $spark\u HOME/bin/spark shell.cmd
    。我的猜测是,当您从windows终端调用
    spark shell
    时,它会自动启动
    spark shell.cmd
    ,这就是为什么该命令会在那里工作。

    谢谢@VonC。它显示了这个错误:
    错误:无法找到或加载主类org.apache.spark.launcher.main。
    我检查了jar文件,总共有246个jar文件(许多子文件)。我已删除spark内置软件包,并重新安装。但还是一样。有没有其他方法来调试这个。我正在考虑尝试使用spark 2.0的最新版本来运行,目的是查看脚本在执行时考虑的确切类路径。