Estoy intentando instalar Spark en mi Mac. He usado home-brew para instalar Spark 2.4.0 y Scala. He instalado PySpark en mi entorno anaconda y estoy usando PyCharm para el desarrollo. He exportado a mi perfil de 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
Sin embargo, no puedo hacer que funcione.
Sospecho que esto se debe a la versión de Java de leer el rastreo. Realmente agradecería ayuda para solucionar el problema. Por favor comente si hay alguna información que pueda proporcionar que sea útil más allá del rastreo.
Estoy teniendo el siguiente error:
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
touch ~/.bash_profile; open ~/.bash_profile
Agregarexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
y guardar dentro de la edición de texto.Respuestas:
Edit Spark 3.0 es compatible con Java 11, por lo que deberá actualizar
Respuesta original
Hasta que Spark sea compatible con Java 11, o superior (que con suerte se mencionará en la documentación más reciente cuando lo sea), debe agregar una marca para configurar su versión de Java en Java 8.
A partir de Spark 2.4.x
En Mac / Unix, consulte asdf-java para instalar diferentes Javas
En una Mac, puedo hacer esto en mi
.bashrc
,export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
En Windows, consulte Chocolately, pero en serio, solo use WSL2 o Docker para ejecutar Spark.
También puede configurar esto en
spark-env.sh
lugar de configurar la variable para todo su perfil.Y, por supuesto, todo esto significa que necesitará instalar Java 8 además de su Java 11 existente.
fuente
Me encontré con este problema al ejecutar Jupyter Notebook y Spark usando Java 11. Instalé y configuré Java 8 siguiendo los siguientes pasos.
Instale Java 8:
$ sudo apt install openjdk-8-jdk
Como ya había instalado Java 11, configuré mi Java predeterminado en la versión 8 usando:
$ sudo update-alternatives --config java
Seleccione Java 8 y luego confirme sus cambios:
$ java -version
La salida debe ser similar a:
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)
Ahora puedo ejecutar Spark correctamente en Jupyter Notebook. Los pasos anteriores se basaron en la siguiente guía: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04
fuente
sdk install java 8.0.212-zulu
instala java 8 y le pregunta si desea usar el java 8 instalado para que sea el java predeterminadoDescubrí que agregar la ubicación de chispa a través de findpark y java8 con os al comienzo del script es la solución más fácil:
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)
fuente
El problema es que PySpark requiere Java 8 para algunas funciones. Spark 2.2.1 estaba teniendo problemas con Java 9 y posteriores. La solución recomendada fue instalar Java 8.
puede instalar java-8 específicamente, configurarlo como su java predeterminado y volver a intentarlo.
para instalar java 8,
sudo apt install openjdk-8-jdk
para cambiar la versión predeterminada de Java, siga esto . puedes usar el comando
update-java-alternatives --list
para enumerar todas las versiones de Java disponibles.
establezca uno predeterminado ejecutando el comando:
sudo update-alternatives --config java
para seleccionar la versión de Java que desee. proporcione el número exacto en la lista proporcionada. luego revise su versión de Java
java -version
y debería actualizarse. Establezca también la variable JAVA_HOME.para configurar JAVA_HOME, debe encontrar la versión y carpeta específicas de Java. Siga esta discusión de SO para tener una idea completa de cómo configurar la variable de inicio de Java. ya que vamos a usar java 8, nuestra ruta de carpeta es
/usr/lib/jvm/java-8-openjdk-amd64/
. simplemente vaya a la/usr/lib/jvm
carpeta y cruje cuáles son las carpetas disponibles. usels -l
para ver carpetas y sus enlaces suaves, ya que estas carpetas pueden ser un acceso directo para algunas versiones de Java. luego vaya a su directorio de iniciocd ~
y edite el archivo bashrccd ~ gedit .bashrc
luego agregue las siguientes líneas al archivo, guárdelo y salga.
## SETTING JAVA HOME export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin
después de eso, para hacer efectivo lo que hiciste, escribe
source ~/.bashrc
y ejecuta en la terminalfuente
En Windows (Windows 10) puede resolver el problema instalando jdk-8u201-windows-x64.exe y restableciendo la variable de entorno del sistema a la versión correcta de JAVA JDK:
JAVA_HOME -> C: \ Archivos de programa \ Java \ jdk1.8.0_201.
No olvide reiniciar el terminal, de lo contrario, el restablecimiento de la variable de entorno no se activará.
fuente
Para los usuarios de Debian 10 'buster', Java 8 JRE está disponible en el
nvidia-openjdk-8-jre
paquete.Instalarlo con
Luego configúrelo
JAVA_HOME
al ejecutarpyspark
, por ejemplo:fuente
Solo quería agregar mis dos centavos aquí, ya que ahorrará varias horas de tiempo para las personas que usan PyCharm (especialmente la configuración de ejecución). Después de cambiar su
.bashrc
o.bash_profile
para apuntar a Java 8 modificando las variables de env JAVA_HOME y PATH (como la mayoría de las personas aquí han recomendado), notará que cuando ejecuta su Spark usando la configuración de ejecución de PyCharm, todavía no recogerá la correcta Java. Parece que hay algún problema con PyCharm (estoy usando PyCharm Professional 2020.2 en Mac Catalina). Además, cuando lo ejecuta usando la terminal de PyCharm, funciona bien. Eso confirma que algo anda mal con PyCharm. Para que la configuración de ejecución de PyCharm recoja un nuevo JAVA, tuve que agregar específicamente la variable de entorno JAVA_HOME en la configuración de ejecución como se muestra a continuación:¡Y funcionó!
Otra opción que también funciona es verificar
Include system environment variables option
en laEnvironment Variables
ventana en la configuración de ejecución (ver captura de pantalla anterior) y reiniciar PyCharmfuente
Tengo el mismo problema en Windows y agregué JAVA_HOME a la ruta de la variable ambiental:
fuente
Hola, de hecho, para estar seguro de que está colocando el SPARK_HOME PATH correcto, puede usar este script de Python para ubicarlo: 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
En mi Mac, en la terminal:
vim ~/.bashrc
y agrega la ruta:
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
y luego finalmente aplicar el cambio
source ~/.bashrc
fuente
En macOS: instale Java8 en su computadora portátil con los siguientes comandos:
fuente
Este problema ocurre debido a la versión de Java que configuró en la variable de entorno JAVA_HOME.
ANTIGUA ruta de JAVA: /usr/lib/jvm/java-1.11.0-openjdk-amd64
Solución: establezca JAVA_HOME en / usr / lib / jvm / java-8-openjdk-amd64
¡¡¡Funcionará!!!
Tenga en cuenta que mi error fue:
Archivo "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/rdd.py", línea 816, en recopilar sock_info = self.ctx._jvm.PythonRDD.collectAndServe (self._jrdd .rdd ()) Archivo "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", línea 1257, en el archivo de llamada "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/utils.py", línea 79, en deco raise IllegalArgumentException (s.split (':', 1) [1], stackTrace) pyspark.sql.utils.IllegalArgumentException: u'Unupported class file major version 55 '
fuente