python 2.7 - ¿Por qué PySpark no puede encontrar py4j.java_gateway?
python-2.7 ipython (5)
En Pycharm, antes de ejecutar el script anterior, asegúrese de haber descomprimido el archivo py4j * .zip. y agregue su referencia en el script sys.path.append ("path to spark * / python / lib")
Funcionó para mí
Instalé Spark, ejecuté el ensamblado sbt y puedo abrir bin / pyspark sin ningún problema. Sin embargo, estoy teniendo problemas para cargar el módulo pyspark en ipython. Me aparece el siguiente error:
In [1]: import pyspark
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-c15ae3402d12> in <module>()
----> 1 import pyspark
/usr/local/spark/python/pyspark/__init__.py in <module>()
61
62 from pyspark.conf import SparkConf
---> 63 from pyspark.context import SparkContext
64 from pyspark.sql import SQLContext
65 from pyspark.rdd import RDD
/usr/local/spark/python/pyspark/context.py in <module>()
28 from pyspark.conf import SparkConf
29 from pyspark.files import SparkFiles
---> 30 from pyspark.java_gateway import launch_gateway
31 from pyspark.serializers import PickleSerializer, BatchedSerializer, UTF8Deserializer, /
32 PairDeserializer, CompressedSerializer
/usr/local/spark/python/pyspark/java_gateway.py in <module>()
24 from subprocess import Popen, PIPE
25 from threading import Thread
---> 26 from py4j.java_gateway import java_import, JavaGateway, GatewayClient
27
28
ImportError: No module named py4j.java_gateway
En mi entorno (usando docker y la imagen sequenceiq / spark: 1.1.0-ubuntu), me encontré con esto. Si observas el script de shell de pyspark, verás que necesitas agregar algunas cosas a tu PYTHONPATH:
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH
Eso funcionó en ipython para mí.
Actualización: como se indica en los comentarios, el nombre del archivo zip py4j cambia con cada versión de Spark, así que busque el nombre correcto.
Instalar el módulo pip ''py4j''.
pip install py4j
Tengo este problema con Spark 2.1.1 y Python 2.7.x. No estoy seguro si Spark dejó de agrupar este paquete en las últimas distribuciones. Pero la instalación del módulo py4j
resolvió el problema para mí.
Resolví este problema agregando algunas rutas en .bashrc
export SPARK_HOME=/home/a141890/apps/spark
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH
Después de esto, nunca sube ImportError: ningún módulo llamado py4j.java_gateway.
#/home/shubham/spark-1.6.2
import os
import sys
# Set the path for spark installation
# this is the path where you have built spark using sbt/sbt assembly
os.environ[''SPARK_HOME''] = "/home/shubham/spark-1.6.2"
# os.environ[''SPARK_HOME''] = "/home/jie/d2/spark-0.9.1"
# Append to PYTHONPATH so that pyspark could be found
sys.path.append("/home/shubham/spark-1.6.2/python")
sys.path.append("/home/shubham/spark-1.6.2/python/lib")
# sys.path.append("/home/jie/d2/spark-0.9.1/python")
# Now we are ready to import Spark Modules
try:
from pyspark import SparkContext
from pyspark import SparkConf`enter code here`
print "Hey nice"
except ImportError as e:
print ("Error importing Spark Modules", e)
sys.exit(1)