스파크 오류 - 지원되지 않는 클래스 파일의 줄자 버전
Mac에 Spark를 설치하려고 합니다.스파크 2.4.0과 스칼라를 설치하기 위해 홈브루를 사용하였습니다.저는 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
Edit 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 시점
스파크는 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 의 경우는, 다른 Javas 를 인스톨 하려면 , asdf-java 를 참조해 주세요.
이것을 할 수 ..bashrc ,
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
Windows에서는 Chocolatically로 체크 아웃합니다만, 실제로는 WSL2 또는 Docker를 사용하여 Spark를 실행합니다.
, 이, 이, 이, 이, 이에서 할 수도 있습니다.spark-env.sh전체 프로필에 변수를 설정하는 것이 아니라
물론 이 모든 것은 기존 Java 11에 더해 Java 8을 설치해야 한다는 것을 의미합니다.
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)
이제 주피터 노트북에서 Spark를 성공적으로 실행할 수 있게 되었습니다.위의 순서는 다음 가이드를 기반으로 합니다.https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04
스크립트 시작 부분에 findspark와 java8을 통해 스파크 위치를 추가하는 것이 가장 쉬운 해결책이라는 것을 알게 되었습니다.
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)
문제는 PySpark가 일부 기능을 위해 Java 8을 재요구한다는 것입니다.스파크 2.2.1은 Java 9 이상에서 문제가 발생했습니다.권장되는 솔루션은 Java 8을 설치하는 것이었습니다.
Java-8을 설치하고 기본 Java로 설정한 후 다시 시도할 수 있습니다.
java 8을 클릭합니다.
sudo apt install openjdk-8-jdk
기본 Java 버전을 변경하려면 다음 절차를 따릅니다.명령어를 사용할 수 있습니다.
update-java-alternatives --list
사용 가능한 모든 Java 버전을 나열합니다.
다음 명령을 실행하여 기본 설정을 합니다.
sudo update-alternatives --config java
자바어 다음 Java 버전을 합니다.java -version갱신해야 합니다.JAVA_AKAKE_AKAKE_AKEADA.홈 ★★★★★★★★★★★★★★★★★★★★★★」
JAVA_를 설정하다HOME, 특정 Java 버전과 폴더를 찾아야 합니다.Java 홈 변수 설정에 대한 자세한 내용은 이 SO에 대해 설명하겠습니다.자바8을 사용하기 때문에 폴더 경로는/usr/lib/jvm/java-8-openjdk-amd64//usr/lib/jvm사용하다ls -l폴더와 해당 소프트링크를 참조할 수 있습니다.를 사용하여 홈디렉토리로 이동합니다.cd ~ filebashrc를합니다.
cd ~
gedit .bashrc
그런 다음 아래 줄을 파일에 추가하고 저장한 후 종료합니다.
## SETTING JAVA HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
, 한 , 「 」, 「 」라고 합니다.source ~/.bashrc을
Windows(Windows 10)에서는, jdk-8u201-windows-x64.exe 를 인스톨 해, 시스템 환경 변수를 올바른 버전의 JAVA JDK 로 리셋 하는 것으로 문제를 해결할 수 있습니다.
JAVA_HOME -> C:\Program Files\Java\jdk1.8.0_201.
터미널을 재시작하는 것을 잊지 마십시오.그렇지 않으면 환경변수 리셋이 실행되지 않습니다.
10 의 경우 8는 Debian 10 '버스터'에서 사용할 수 .nvidia-openjdk-8-jre★★★★★★★★★★★★★★★★★★.
와 함께 설치 방법
sudo apt install nvidia-openjdk-8-jre
으로 " " " 를 설정합니다.JAVA_HOME 시pyspark 예: 개요:
JAVA_HOME=/usr/lib/jvm/nvidia-java-8-openjdk-amd64/ pyspark
PyCharm(특히 실행 구성)을 사용하는 사용자에게 몇 시간을 절약할 수 있기 때문에 여기에 제 의견을 덧붙이고 싶습니다.변경 후.bashrc ★★★★★★★★★★★★★★★★★」.bash_profileJava_를 수정하여 Java 8을 가리키다HOME 및 PATH env 변수(여기에 있는 대부분의 사람들이 권장하는 것처럼)는 PyCharm의 실행 구성을 사용하여 Spark를 실행해도 여전히 올바른 Java가 선택되지 않는다는 것을 알 수 있습니다.PyCharm에 문제가 있는 것 같습니다(Mac Catalina에서 PyCharm Professional 2020.2를 사용하고 있습니다).또한 PyCharm 단말기를 사용하여 실행하면 정상적으로 동작합니다.그것은 PyCharm에 문제가 있다는 것을 확인시켜 준다.PyCharm의 실행 Configuration이 새로운 JAVA를 선택하기 위해서는 특별히 JAVA_를 추가해야 했습니다.아래 그림과 같이 실행 구성의 HOME 환경 변수 -
그리고 그게 효과가 있었어!
다른 방법으로도 동작하는 것은,Include system environment variables option에서Environment Variables실행 구성의 창(위 스크린샷 참조) 및 PyCharm 재시작
윈도에서도 같은 문제가 발생하여 JAVA_를 추가했습니다.환경변수 경로의 홈:
JAVA_HOME: C:\Program Files\Java\jdk-11.0.1
안녕하세요, 실제로 올바른 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
이 문제는 JAVA_에서 설정한 Java 버전 때문에 발생합니다.HOME 환경 변수.
OLD JAVA 경로:/usr/lib/jvm/java-1.11.0-openjdk-amd64
해결책: JAVA_ 설정홈 /usr/lib/jvm/java-8-openjdk-amd64
될 거야!!!
주의: 오류:
파일 "/home/tms/mycollect sock_info = self.ctx._jvm에 InstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/rdd.py", 816 행을 설치합니다.PythonRDD.collectAndServe(셀프)._jrdd.rdd()) 파일 "/home/tms/my"콜 파일 "/home/tms/my"에 Dir/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", 회선1257 을 인스톨 합니다.installDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/utils.py", 79행, Indeco에서 IlgalArgument 발생예외(s.split(): ', 1)[1], stackTrace) pyspark.sql.utils.부정 인수예외: u'지원되지 않는 클래스 파일 메이저 버전 55'
MacOS의 경우: 다음 명령을 사용하여 노트북에 Java8을 설치합니다.
brew tap AdoptOpenJDK/openjdk
brew cask install adoptopenjdk8
언급URL : https://stackoverflow.com/questions/53583199/spark-error-unsupported-class-file-major-version
'source' 카테고리의 다른 글
| JavaScript 체크박스를 켜거나 끄다 (0) | 2022.09.08 |
|---|---|
| 크롬 및 파이어폭스의 Javascript에서 Cryptic "스크립트 오류"가 보고됨 (0) | 2022.09.08 |
| 테이블 내의 각 외부 키 ID 인스턴스 수를 카운트하려면 어떻게 해야 합니까? (0) | 2022.09.08 |
| MySQL 5.7.30에 비해 마리아DB 10.4.13의 퍼포먼스가 느리다 (0) | 2022.09.08 |
| Linux 또는 Windows에서 OS X를 컴파일하는 방법 (0) | 2022.09.05 |