FIX:
要解决此问题,我编辑了bash_profile,以确保将java 1.8用作全局默认值,如下所示:
touch ~/.bash_profile; open ~/.bash_profile
添加
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
并保存在文本编辑中。
问题:
我正在尝试在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
答案 0 :(得分:15)
直到Spark被编译为支持Java 11之前,您都必须添加
$('#datatable').DataTable({"pageLength": -1});
或者找到export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
并在那里做
您需要先spark-env.sh
答案 1 :(得分:5)
使用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
答案 2 :(得分:2)
听到的问题是PySpark需要Java 8的某些功能。 Spark 2.2.1在Java 9及更高版本中存在问题。推荐的解决方案是安装Java 8。
您可以专门安装Java-8,并将其设置为默认Java,然后重试。
要安装Java 8,
sudo apt install openjdk-8-jdk
要更改默认的Java版本,请遵循this。您可以使用命令
update-java-alternatives --list
列出所有可用的Java版本。
通过运行以下命令设置默认值:
sudo update-alternatives --config java
选择所需的Java版本。在提供的列表中提供准确的号码。
然后检查您的Java版本java -version
,并应对其进行更新。还要设置JAVA_HOME变量。
要设置JAVA_HOME,必须找到特定的Java版本和文件夹。进行this的休闲讨论,以获得有关设置java home变量的完整信息。由于我们将使用Java 8,因此我们的文件夹路径为/usr/lib/jvm/java-8-openjdk-amd64/
。只需转到/usr/lib/jvm
文件夹并吱吱叫什么是可使用的文件夹。使用ls -l
查看文件夹及其软链接,因为这些文件夹对于某些Java版本可能是快捷方式。然后转到主目录cd ~
并编辑bashrc文件
cd ~
gedit .bashrc
然后将波纹管添加到文件中,保存并退出。
## SETTING JAVA HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
答案 3 :(得分:1)
使用pycharm,我发现在开始时通过 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)
答案 4 :(得分:1)
对于Debian 10'buster'用户,nvidia-openjdk-8-jre
软件包中提供了Java 8 JRE。
使用
安装sudo apt install nvidia-openjdk-8-jre
然后在运行JAVA_HOME
时设置pyspark
,例如:
JAVA_HOME=/usr/lib/jvm/nvidia-java-8-openjdk-amd64/ pyspark
答案 5 :(得分:1)
只想在这里加两分钱,因为它为使用 PyCharm (特别是运行配置)的人们节省了几个小时的时间。通过修改JAVA_HOME和PATH env变量将.bashrc
或.bash_profile
更改为指向Java 8之后(就像这里的大多数人所建议的那样),您会注意到,当您使用的运行配置运行Spark时PyCharm,它仍然不会选择正确的Java。似乎PyCharm存在一些问题(我在Mac Catalina中使用的是PyCharm Professional 2020.2)。另外,当您使用PyCharm终端运行它时,它可以正常工作。确认PyCharm出了点问题。为了使PyCharm的运行配置能够使用新的JAVA,我必须在运行配置中专门添加JAVA_HOME环境变量,如下所示-
成功了!
另一个可行的方法是在运行配置的Include system environment variables option
窗口中检查Environment Variables
(请参见上面的屏幕截图),然后重新启动PyCharm
答案 6 :(得分:0)
我在Windows中有相同的问题,并且我已将JAVA_HOME添加到环境变量路径中:
JAVA_HOME:C:\ Program Files \ Java \ jdk-11.0.1
答案 7 :(得分:0)
在Windows(Windows 10)上,您可以通过安装jdk-8u201-windows-x64.exe并将系统环境变量重置为Java JDK的正确版本来解决此问题:
JAVA_HOME-> C:\ Program Files \ Java \ jdk1.8.0_201。
别忘了重新启动终端,否则环境变量的重置不会生效。
答案 8 :(得分:0)
您好,实际上请确保您输入了正确的SPARK_HOME PATH,您可以使用以下python脚本找到它:https://github.com/apache/spark/blob/master/python/pyspark/find_spark_home.py
python3 find_spark_home.py
/usr/local/lib/python3.7/site-packages/pyspark
在我的Mac上,在终端上:
vim ~/.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
答案 9 :(得分:0)
在macOS上:使用以下命令在笔记本电脑上安装Java8:
brew tap AdoptOpenJDK/openjdk
brew cask install adoptopenjdk8
答案 10 :(得分:-1)
由于您在JAVA_HOME环境变量上设置的Java版本而发生此问题。
OLD JAVA路径:/usr/lib/jvm/java-1.11.0-openjdk-amd64
解决方案:将JAVA_HOME设置为/ usr / lib / jvm / java-8-openjdk-amd64
它将起作用!!!
请注意我的错误是:
文件“ /home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/rdd.py”,行816,在收集中 sock_info = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd()) 在调用中的文件“ /home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”,行1257 装饰中的文件“ /home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/utils.py”,第79行 引发IllegalArgumentException(s.split(':',1)[1],stackTrace) pyspark.sql.utils.IllegalArgumentException:u'不支持的类文件主版本55'