2014-12-22 3 views
5

Цель: Я пытаюсь получить pyspark apache-spark, чтобы правильно интерпретироваться в моей среде разработки pycharm.pyspark ImportError: не могу импортировать накопители имен

Проблема: В настоящее время появляется следующее сообщение об ошибке:

ImportError: cannot import name accumulators 

Я был следующий следующий блог, чтобы помочь мне в этом процессе. http://renien.github.io/blog/accessing-pyspark-pycharm/

Из-за того, что мой код принимал за исключением пути, я лично избавился от попытки: кроме: просто чтобы узнать, что такое точная ошибка.

До этого я получил следующее сообщение об ошибке:

ImportError: No module named py4j.java_gateway 

Это было исправлено просто набрав «$ Sudo пункт установить py4j» в Баш.

Мой код в настоящее время выглядит следующим образом: кусок

import os 
import sys 

# Path for spark source folder 
os.environ['SPARK_HOME']="[MY_HOME_DIR]/spark-1.2.0" 

# Append pyspark to Python Path 
sys.path.append("[MY_HOME_DIR]/spark-1.2.0/python/") 

try: 
    from pyspark import SparkContext 
    print ("Successfully imported Spark Modules") 

except ImportError as e: 
    print ("Can not import Spark Modules", e) 
    sys.exit(1) 

Мои вопросы:
1. Что является источником этой ошибки? В чем причина? 2. Как исправить проблему, поэтому я могу запустить pyspark в своем редакторе pycharm.

ПРИМЕЧАНИЕ: В настоящее время я использую переводчик в PyCharm является Python 2.7.8 (~/Анаконда/бен/питон)

Спасибо заранее!

Дон

ответ

1

Во-первых, установите среда вар

export SPARK_HOME=/home/.../Spark/spark-2.0.1-bin-hadoop2.7 
export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.10.3-src.zip:$PYTHONPATH 
PATH="$PATH:$JAVA_HOME/bin:$SPARK_HOME/bin:$PYTHONPATH" 

убедитесь, что вы используете свое собственное имя версии

, а затем перезапустить! важно проверить правильность настройки.

4

Это смотрит на меня как ошибка в круговой зависимости.

В MY_HOME_DIR]/spark-1.2.0/python/pyspark/context.py удалить или закомментировать линии

from pyspark import accumulators.

Это примерно 6 строк кода сверху.

я подал вопрос с Спарк проекта здесь:

https://issues.apache.org/jira/browse/SPARK-4974

+0

Здравствуйте. Спасибо за ответ. Когда я прокомментировал это, это не устранило проблему. –

+0

Я думаю, что это может иметь какое-то отношение к версии Java.Версия Java у меня 1,8, и ее нужно понизить до 1.6.X для этого. Я просто не хочу этого делать. См. Http://stackoverflow.com/questions/23353477/trouble-installing-pyspark –

+0

@ matt2000, комментирующие аккумуляторы дают ошибку во время выполнения, когда я пытался использовать пример программы (например, wordcount.py) –

1

Я столкнулся с той же проблемой, используя CDH 5.3

в конце концов, это действительно оказалось довольно легко решить. Я заметил, что скрипт/USR/Lib/искровой/bin/pyspark имеет переменные определен для IPython

я установил анаконда в/Opt/анакондах

export PATH=/opt/anaconda/bin:$PATH 
#note that the default port 8888 is already in use so I used a different port 
export IPYTHON_OPTS="notebook --notebook-dir=/home/cloudera/ipython-notebook --pylab inline --ip=* --port=9999" 

, наконец ....

казнен

/usr/bin/pyspark 

который теперь функционирует должным образом.

7

Это переменная PYTHONPATH, которая определяет путь поиска модуля python.

Причина, по которой pyspark работает хорошо, вы можете обратиться к сценарию pyspark оболочки, и увидеть настройку PYTHONPATH так, как показано ниже.

PYTHONPATH =/usr/lib/spark/python/lib/py4j-0.8.2.1-src.zip:/usr/lib/spark/python.

Мое окружение - Cloudera Qickstart VM 5.3.

Надеюсь, это поможет.

+0

на моем mac я добавил следующее мой .bash_profile 'export PYTHONPATH =/opt/spark/python' – lukewitmer

1

Я столкнулся с этой проблемой. Чтобы решить эту проблему, я закомментировать линию 28 в ~/spark/spark/python/pyspark/context.py, файл, который вызывает ошибку:

# from pyspark import accumulators 
from pyspark.accumulators import Accumulator 

Поскольку импорт аккумулятор, кажется, распространяется на следующей строке (29), там, кажется, не будет вопрос. Искра теперь работает нормально (после pip install py4j).

0

Я смог найти исправление для этого в Windows, но не совсем уверен в его первопричине.

Если вы откроете файл accumulators.py, то увидите, что сначала есть комментарий к заголовку, затем текст справки, а затем инструкции импорта. переместите один или несколько операторов импорта сразу после блока комментариев и перед текстом справки. Это работало на моей системе, и я смог импортировать pyspark без каких-либо проблем.

1

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

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

1
To get rid of **ImportError: No module named py4j.java_gateway** you need to add following lines 

import os 
import sys 


os.environ['SPARK_HOME'] = "D:\python\spark-1.4.1-bin-hadoop2.4" 


sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python") 
sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python\lib\py4j-0.8.2.1-src.zip") 

try: 
    from pyspark import SparkContext 
    from pyspark import SparkConf 

    print ("success") 

except ImportError as e: 
    print ("error importing spark modules", e) 
    sys.exit(1) 
0

Если вы только что повышены до новой свечи версии, убедитесь, что новая версия py4j находится в вашем PATH, так как каждая новая искра версия поставляется с новой версией py4j.

В моем случае это: «$ SPARK_HOME/python/lib/py4j-0.10.3-src.zip» для искры 2.0.1 вместо старого «$ SPARK_HOME/python/lib/py4j-0.10.1 -src.zip»искру 2.0.0

2

Я столкнулся с той же ошибкой. Я только что установил py4j.

sudo pip install py4j 

Не нужно устанавливать bashrc.

+0

Это работало для меня на окнах 10 после перезапуска jupyter – user18101

0

Единственное, что сработало для меня, - перейти в базовую папку искры. затем перейдите к аккумулятору.py

В начале была использована неправильная команда с несколькими линиями. удалите все.

Вы готовы к работе!

Смежные вопросы