Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark错误-不支持的类文件主版本_Java_Python_Macos_Apache Spark_Pyspark - Fatal编程技术网

Java Spark错误-不支持的类文件主版本

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/

我正试图在我的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/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。上述步骤基于以下指南:

我发现在脚本开头通过findsparkjava8os添加火花位置是最简单的解决方案:

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) 

我发现在脚本开头通过findsparkjava8os添加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