Java Spark错误-不支持的类文件主版本
我正试图在我的Mac上安装Spark。我使用自制软件安装了spark 2.4.0和Scala。我已经在我的anaconda环境中安装了PySpark,并且正在使用PyCharm进行开发。我已导出到我的bash配置文件:Java Spark错误-不支持的类文件主版本,java,python,macos,apache-spark,pyspark,Java,Python,Macos,Apache Spark,Pyspark,我正试图在我的Mac上安装Spark。我使用自制软件安装了spark 2.4.0和Scala。我已经在我的anaconda环境中安装了PySpark,并且正在使用PyCharm进行开发。我已导出到我的bash配置文件: export SPARK_VERSION=`ls /usr/local/Cellar/apache-spark/ | sort | tail -1` export SPARK_HOME="/usr/local/Cellar/apache-spark/$SPARK_VERSION/
export SPARK_VERSION=`ls /usr/local/Cellar/apache-spark/ | sort | tail -1`
export SPARK_HOME="/usr/local/Cellar/apache-spark/$SPARK_VERSION/libexec"
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
但是我无法让它工作
我怀疑这是由于java版本读取了回溯。如果能帮我解决这个问题,我将不胜感激。请评论,如果有任何信息,我可以提供的是有帮助的以外的追溯
我得到以下错误:
Traceback (most recent call last):
File "<input>", line 4, in <module>
File "/anaconda3/envs/coda/lib/python3.6/site-packages/pyspark/rdd.py", line 816, in collect
sock_info = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
File "/anaconda3/envs/coda/lib/python3.6/site-packages/py4j/java_gateway.py", line 1257, in __call__
answer, self.gateway_client, self.target_id, self.name)
File "/anaconda3/envs/coda/lib/python3.6/site-packages/py4j/protocol.py", line 328, in get_return_value
format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: java.lang.IllegalArgumentException: Unsupported class file major version 55
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
collect中的文件“/anaconda3/envs/coda/lib/python3.6/site packages/pyspark/rdd.py”,第816行
sock\u info=self.ctx.\u jvm.PythonRDD.collectAndServe(self.\u jrdd.rdd())
文件“/anaconda3/envs/coda/lib/python3.6/site packages/py4j/java_gateway.py”,第1257行,in_u调用__
回答,self.gateway\u客户端,self.target\u id,self.name)
文件“/anaconda3/envs/coda/lib/python3.6/site packages/py4j/protocol.py”,第328行,在get_return_值中
格式(目标id,“.”,名称),值)
py4j.protocol.Py4JJavaError:调用z:org.apache.spark.api.python.PythonRDD.collectAndServe时出错。
:java.lang.IllegalArgumentException:不支持的类文件主版本55
编辑Spark 3.0支持Java 11,因此需要升级
Spark在Java8/11、Scala2.12、Python2.7+/3.4+和R3.1+上运行。自Spark 3.0.0起,不推荐使用8u92版本之前的Java 8支持
原始答案 在Spark支持Java11或更高版本(希望在它出现时会提到)之前,您必须添加一个标志来将Java版本设置为Java8 自Spark 2.4.x起 Spark在Java 8、Python 2.7+/3.4+和R3.1+上运行。对于Scala API,Spark 2.4.4使用Scala 2.12。您需要使用兼容的Scala版本(2.12.x) 在Mac/Unix上,有关安装不同Java的信息,请参阅 在Mac电脑上,我可以在我的
.bashrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
在Windows上,用巧克力结帐,但认真地说,只需使用WSL2或Docker运行Spark即可
您也可以在
spark env.sh
中设置此变量,而不是为整个配置文件设置变量
当然,这一切都意味着,除了现有的Java 11,您还需要安装Java 8,因此您需要升级Spark 3.0 Spark在Java8/11、Scala2.12、Python2.7+/3.4+和R3.1+上运行。自Spark 3.0.0起,不推荐使用8u92版本之前的Java 8支持
原始答案 在Spark支持Java11或更高版本(希望在它出现时会提到)之前,您必须添加一个标志来将Java版本设置为Java8 自Spark 2.4.x起 Spark在Java 8、Python 2.7+/3.4+和R3.1+上运行。对于Scala API,Spark 2.4.4使用Scala 2.12。您需要使用兼容的Scala版本(2.12.x) 在Mac/Unix上,有关安装不同Java的信息,请参阅 在Mac电脑上,我可以在我的
.bashrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
在Windows上,用巧克力结帐,但认真地说,只需使用WSL2或Docker运行Spark即可
您也可以在
spark env.sh
中设置此变量,而不是为整个配置文件设置变量
当然,这一切都意味着除了现有的Java 11之外,您还需要安装Java 8我在windows中也遇到了同样的问题,我已经将Java_HOME添加到环境变量路径中: JAVA\u主页:C:\Program Files\JAVA\jdk-11.0.1
我在windows中也遇到同样的问题,我已将JAVA_HOME添加到环境变量path中: JAVA\u主页:C:\Program Files\JAVA\jdk-11.0.1 在windows(windows 10)上,可以通过安装jdk-8u201-windows-x64.exe并将系统环境变量重置为JAVA jdk的正确版本来解决此问题: JAVA_HOME->C:\Program Files\JAVA\jdk1.8.0_201 不要忘记重新启动终端,否则环境变量的重置不会生效 在windows(windows 10)上,您可以通过安装jdk-8u201-windows-x64.exe并将系统环境变量重置为JAVA jdk的正确版本来解决此问题: JAVA_HOME->C:\Program Files\JAVA\jdk1.8.0_201
不要忘记重新启动终端,否则环境变量的重置不会生效 我在使用Java11运行Jupyter笔记本和Spark时遇到了这个问题。我使用以下步骤安装并配置了Java8 安装Java 8:
$ sudo apt install openjdk-8-jdk
因为我已经安装了Java 11,所以我使用以下命令将默认Java设置为版本8:
$ sudo update-alternatives --config java
选择Java 8,然后确认更改:
$ java -version
输出应类似于:
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
我现在能够在Jupyter笔记本中成功运行Spark。以上步骤基于以下指南:我在使用Java 11运行Jupyter Notebook和Spark时遇到了这个问题。我使用以下步骤安装并配置了Java8 安装Java 8:
$ sudo apt install openjdk-8-jdk
因为我已经安装了Java 11,所以我使用以下命令将默认Java设置为版本8:
$ sudo update-alternatives --config java
选择Java 8,然后确认更改:
$ java -version
输出应类似于:
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
我现在能够在Jupyter笔记本中成功运行Spark。上述步骤基于以下指南:我发现在脚本开头通过findspark和java8和os添加火花位置是最简单的解决方案:
import findspark
import os
spark_location='/opt/spark-2.4.3/' # Set your own
java8_location= '/usr/lib/jvm/java-8-openjdk-amd64' # Set your own
os.environ['JAVA_HOME'] = java8_location
findspark.init(spark_home=spark_location)
我发现在脚本开头通过findspark和java8和os添加spark位置是最简单的解决方案:
import findspark
import os
spark_location='/opt/spark-2.4.3/' # Set your own
java8_location= '/usr/lib/jvm/java-8-openjdk-amd64' # Set your own
os.environ['JAVA_HOME'] = java8_location
findspark.init(spark_home=spark_location)
对于Debian 10“buster”用户,Java 8 JRE可在
nvidia-openjdk-8-JREvim ~/.bashrc
export JAVA_HOME=/Library/java/JavaVirtualMachines/adoptopenjdk-8.jdk/contents/Home/
export SPARK_HOME=/usr/local/lib/python3.7/site-packages/pyspark
export PYSPARK_PYTHON=/usr/local/bin/python3
source ~/.bashrc