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

2022-08-31 10:12:38

我正在尝试在 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

答案 1

编辑Spark 3.0 支持 Java 11,因此您需要升级

Spark 运行在 Java 8/11、Scala 2.12、Python 2.7+/3.4+ 和 R 3.1+ 上。版本 8u92 之前的 Java 8 支持从 Spark 3.0.0 开始弃用



原始答案

在Spark支持Java 11或更高版本之前(希望在最新的文档中提到它),你必须添加一个标志来将Java版本设置为Java 8。

截至 Spark 2.4.x

Spark 运行在 Java 8、Python 2.7+/3.4+ 和 R 3.1+ 上。对于 Scala API,Spark 2.4.4 使用 Scala 2.12。您需要使用兼容的 Scala 版本 (2.12.x)

在 Mac/Unix 上,请参阅 asdf-java 以安装不同的 Java

在Mac上,我可以在我的,中执行此操作。.bashrc

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

在Windows上,签出Cocolately,但认真地只使用WSL2或Docker来运行Spark。


您也可以在 中设置此项,而不是为整个配置文件设置变量。spark-env.sh

当然,这一切都意味着除了现有的Java 11之外,您还需要安装Java 8。


答案 2

我在使用Java 11运行Jupyter Notebook和Spark时遇到了这个问题。我使用以下步骤为Java 8安装和配置。

安装 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 Notebook中成功运行Spark。上述步骤基于以下指南:https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04