如何解决在 Windows 上的 Git Bash 中设置 Spark-shell
我的系统上的任何其他软件都没有遇到过这个问题。能够在窗口终端/命令提示符和 Git-Bash 中安装和运行所有内容
最近,我开始学习 Spark。安装 Spark 设置所有 JAVA_HOME、SCALA_HOME、hadoop winutils 文件。 Spark-shell 和 pyspark-shell 都在命令提示符/窗口终端和 Jupyter 中通过 pyspark lib 完美运行。
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 shell 设置以下内容:
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-class 文件中追溯错误。它是这样的: In line 96
我的问题,
谢谢。
解决方法
尝试专门从 Git Bash 运行 spark-shell.cmd,例如$SPARK_HOME/bin/spark-shell.cmd
。我的猜测是,当您从 Windows 终端调用 spark-shell
时,它会自动启动 spark-shell.cmd
,这就是该命令从那里开始工作的原因。
作为 mentioned here,这取决于启动 Spark 时脚本使用的 java -cp
类路径参数。
如果所述脚本以 #!/bin/sh
或 #!/bin/bash
开头,则为其添加 -x
(例如:#!/bin/bash -x
)
这将强制脚本显示执行的每一行,您可以看到有关 ${#CMD[@]}
的更多信息。
我遇到了同样的问题。经查,根本原因是git bash中传递给java命令的classpath无法识别。
例如git bash 中的以下命令将不起作用,因为 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
Error: Could not find or load main class 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。