/ / Uso de pyspark en Zeppelin con python3 en Spark 2.1.0 - python-3.x, apache-spark, pyspark, python-3.5, apache-zeppelin

Uso de pyspark en Zeppelin con python3 en Spark 2.1.0 - python-3.x, apache-spark, pyspark, python-3.5, apache-zeppelin

Estoy tratando de ejecutar pyspark en Zeppelin ypython3 (3.5) contra Spark 2.1.0. Tengo el shell pyspark en funcionamiento con python3, pero voltear a Zeppelin conectando al mismo clúster local da:

Exception: Python in worker has different version 3.5 than that in driver 2.7, PySpark cannot run with different minor versions

He modificado el spark-env.sh predeterminado de la siguiente manera: (líneas no modificadas omitidas por brevedad)

SPARK_LOCAL_IP=127.0.0.1
SPARK_MASTER_HOST="localhost"
SPARK_MASTER_WEBUI_PORT=8080
SPARK_MASTER_PORT=7077
SPARK_DAEMON_JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython

Mirando las cosas ./bin/pyspark y todo está bien en la cáscara.

La configuración de Zeppelin se ha modificado en zeppelin-site.xml solo para alejar el puerto ui de 8080 a 8666. 'zeppelin-env.sh "se ha modificado de la siguiente manera: (mostrando solo modificaciones / adiciones)

export MASTER=spark://127.0.0.1:7077
export SPARK_APP_NAME=my_zeppelin-mf
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython
export PYTHONPATH=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3

He intentado usar Anaconda, pero Python 3.6 actualmente está creando problemas con Spark. Además, he usado un montón de combinaciones de las configuraciones de configuración anteriores sin éxito.

Hay una configuración referenciada en las configuraciones zeppelin.pyspark.python que por defecto es python pero no está claro en los documentos cómo / dónde ajustar eso a python3. Para ayudar a eliminar los detalles de OSX, también pude replicar esta falla en LinuxMint 18.1.

  • Ejecución local en OSX 10.11.6
  • Spark es 2.1.0-bin-hadoop2.7
  • Zeppelin 0.7.0-bin-all

Así que he estado revisando los documentos de Zeppeline Internet tratando de encontrar la configuración adecuada para que Zeppelin se ejecute como un controlador 3.5. Con esperanza me estoy perdiendo algo obvio, pero parece que no puedo rastrear esto. Espero que alguien haya hecho esto con éxito y pueda ayudar a identificar mi error.

Gracias.

Respuestas

5 para la respuesta № 1

Naturalmente, algo funcionó justo después de publicar esto ...

En la configuración de Zeppelin en ./conf/interpreter.json, para uno de mis cuadernos encontré la configuración:

 "properties": {
...
"zeppelin.pyspark.python": "python",
...
}

Cambiando esto a:

 "properties": {
...
"zeppelin.pyspark.python": "python3",
...
}

(Combined with the same settings as above)

Ha tenido el efecto deseado de obtener elcuaderno de trabajo con python 3.5. Sin embargo, esto parece un poco torpe / hacky y sospecho que hay una manera más elegante de hacer esto. Así que no llamaré a esto una solución / respuesta, sino más bien una solución.


4 para la respuesta № 2

La forma correcta de configurar el %pyspark El intérprete para usar Python 3 a través de la interfaz de usuario de Zeppelin es el siguiente (probado en el contenedor acoplable apache / zeppelin).

  1. Haga clic en su menú de usuario
  2. Haga clic en Interpreter opción del menú
  3. Buscar spark Interprete
  4. selecciona el zeppelin.pyspark.python propiedad de configuración para python3
  5. Hacer clic Save
  6. Haga clic en Restart en la esquina superior derecha para reiniciar el intérprete

Ahora puede verificar que la versión de python abra un Notebook y ejecute el siguiente código:

%pyspark
import sys
sys.version_info

Deberías ver algo como esto como salida

sys.version_info(major=3, minor=5, micro=2, releaselevel="final", serial=0)

También debe configurar PYSPARK_PYTHON y PYSPARK_PYTHON_DRIVER en python3 de esta manera (por ejemplo, usando el contenedor acoplado apache / zeppelin suponiendo que zeppelin sea el nombre del contenedor):

docker exec -it zeppelin bash
cd /zeppelin/conf
cp zeppelin-env.sh.template zeppelin-env.sh
cat <<EOF >> zeppelin-env.sh
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3
EOF
# Now, press Ctrl+d to exit the container
docker restart zeppelin

Ahora todo se ha configurado para ejecutar pyspark con python3