Подтвердить что ты не робот

Почему PySpark не может найти py4j.java_gateway?

Я установил Spark, запустил сборку sbt и без проблем смог открыть bin/pyspark. Тем не менее, у меня возникают проблемы с загрузкой модуля pyspark в ipython. Я получаю следующую ошибку:

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
4b9b3361

Ответ 1

В моей среде (используя докер и последовательность изображений /spark: 1.1.0-ubuntu) я подбежал к этому. Если вы посмотрите на оболочку pyspark script, вы увидите, что вам нужно добавить несколько вещей к вашему PYTHONPATH:

export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

Это работало в ipython для меня.

Обновление: как отмечено в комментариях, имя файла py4j zip изменяется с каждым выпуском Spark, поэтому посмотрите на правильное имя.

Ответ 2

Я решил эту проблему, добавив несколько путей в .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

После этого он никогда не поднимает ImportError: нет модуля с именем py4j.java_gateway.

Ответ 3

В Пичарме, перед запуском над script убедитесь, что вы распаковали файл py4j *.zip. и добавьте ссылку в script sys.path.append( "путь к искры */python/lib" )

Это сработало для меня.

Ответ 4

#/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)

Ответ 5

Установить модуль pip 'py4j'.

pip install py4j

У меня возникла проблема с Spark 2.1.1 и Python 2.7.x. Не уверен, что Spark прекратил связывать этот пакет в последних дистрибутивах. Но установка модуля py4j решила проблему для меня.