在windows上的Git Bash中设置Spark shell
我从未在mysystem上的任何其他软件中遇到过这个问题。能够在Windows终端/命令提示符和Git Bash中安装和运行所有内容 最近,我开始学习Spark。已安装Spark设置一切JAVA\u HOME、SCALA\u HOME、hadoop winutils文件。sparkshell和pysparkshell都在命令提示符/窗口终端和通过pyspark库在Jupyter中完美运行在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
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类文件中的错误。因此:
我的问题,
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的最新版本来运行,目的是查看脚本在执行时考虑的确切类路径。