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

新手上路,请多包涵

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

原文由 shbfy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 821
2 个回答

编辑 Spark 3.0 支持 Java 11,所以你需要升级

Spark 在 Java 8/11、Scala 2.12、Python 2.7+/3.4+ 和 R 3.1+ 上运行。从 Spark 3.0.0 开始,不推荐使用 8u92 版本之前的 Java 8



原答案

在 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 安装不同的 Javas

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

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

在 Windows 上,检查 Chocolately,但认真地使用 WSL2 或 Docker 来运行 Spark。


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

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

原文由 OneCricketeer 发布,翻译遵循 CC BY-SA 4.0 许可协议

我在使用 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

原文由 Andre Oporto 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题