2014-12-22 13 views
5

Cel: Próbuję uzyskać odpowiednią interpretację pysparku Apache-iskry w ramach mojego IDP Pycharm.pyspark ImportError: nie można zaimportować nazwy akumulatorów

Problem: Obecnie pojawia się następujący błąd:

ImportError: cannot import name accumulators 

byłem następujące poniższym blogu mi pomóc w procesie. http://renien.github.io/blog/accessing-pyspark-pycharm/

Z uwagi na fakt, że mój kod wykorzystał wyjątkową ścieżkę, osobiście pozbyłem się tej próby: z wyjątkiem: tylko po to, aby zobaczyć, jaki dokładnie był błąd.

Wcześniej otrzymałem następujący błąd:

ImportError: No module named py4j.java_gateway 

ta została ustalona po prostu przez wpisanie '$ sudo pip zainstalować py4j' w bash.

Moje kodu aktualnie wygląda następującym fragmencie:

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) 

moje pytania:
1. Co jest źródłem tego błędu? Jaka jest przyczyna? 2. W jaki sposób mogę rozwiązać problem, aby uruchomić program Pyspark w moim edytorze plików Pycharm.

UWAGA: Prąd tłumacza używam w pycharm jest Python 2.7.8 (~/Anaconda/bin/python)

Dzięki z wyprzedzeniem!

Don

Odpowiedz

1

po pierwsze, ustaw var środowisko

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" 

upewnij się, że używasz własną nazwę wersji

, a następnie ponownie uruchomić! Ważne jest, aby zatwierdzić ustawienie.

4

Wygląda to jak błąd związany z kołem.

W MY_HOME_DIR]/spark-1.2.0/python/pyspark/context.py usunięcia lub komentarza-OUT linii

from pyspark import accumulators.

To około 6 linii kodu od góry.

I złożony problem z projektem Spark tutaj:

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

+0

Witaj. Dzięki za odpowiedzi. Kiedy skomentowałem, że to nie rozwiązało problemu. –

+0

Myślę, że to może mieć coś wspólnego z wersją Java.Wersja Java, którą mam, to 1.8 i musi zostać obniżona do wersji 1.6.X, żeby to działało. Po prostu nie chcę tego zrobić. Zobacz http://stackoverflow.com/questions/23353477/trouble-installing-pyspark –

+0

@ matt2000, komentowanie akumulatorów daje błąd runtime, gdy próbowałem z przykładowym programem (takim jak wordcount.py) –

1

wpadłem na tej samej kwestii korzystania CDH 5.3

w końcu to rzeczywiście okazał się być dość łatwe do rozwiązania. Zauważyłem, że skrypt/usr/lib/iskra/bin/pyspark ma zmienne zdefiniowane dla ipython

mam zainstalowanego anakondy do/opt/anaconda

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" 

wreszcie ....

stracony

/usr/bin/pyspark 

która teraz działa zgodnie z oczekiwaniami.

7

Wokół zmiennej PYTHONPATH, która określa ścieżkę przeszukiwania modułu Pythona.

Powód, że głównie pyspark działa dobrze, możesz odnieść się do skryptu powłoki pyspark i zobaczyć ustawienie PYTHONPATH jest jak poniżej.

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

Moje środowisko to Cloudera Qickstart VM 5.3.

Mam nadzieję, że to pomoże.

+0

na moim maciu i dodałem do mój .bash_profile 'export PYTHONPATH =/opt/spark/python' – lukewitmer

1

Wpadłem również na ten problem. Aby go rozwiązać, ja wykomentowane linii 28 w ~/spark/spark/python/pyspark/context.py, plik, który powoduje błąd:

# from pyspark import accumulators 
from pyspark.accumulators import Accumulator 

Jako że import akumulator wydaje się być objęte następującą linię (29), nie wydaje się być problem. Spark działa teraz dobrze (po pip install py4j).

0

Udało mi się znaleźć poprawkę na ten temat w systemie Windows, ale nie jestem do końca pewna, na czym polega jego przyczyna.

Po otwarciu pliku accumulators.py zobaczysz najpierw komentarz nagłówka, a następnie tekst pomocy, a następnie instrukcje importu. przenieść jedną lub więcej instrukcji importu tuż za blokiem komentarza i przed tekstem pomocy. To działało w moim systemie i mogłem importować pyspark bez żadnych problemów.

1

W Pycharm, przed uruchomieniem powyższego skryptu, upewnij się, że rozpakowałeś plik py4j * .zip. i dodaj jego odniesienie w skrypcie sys.path.append ("ścieżka do iskry */python/lib")

To zadziałało dla mnie.

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

Jeśli właśnie uaktualnione do nowej wersji zapłonowej, upewnij się, że nowa wersja py4j jest w PATH, ponieważ każda nowa wersja iskra pochodzi z nowej wersji py4j.

W moim przypadku jest to: "$ SPARK_HOME/python/lib/py4j-0.10.3-src.zip" dla iskry 2.0.1 zamiast starego "$ SPARK_HOME/python/lib/py4j-0.10.1 -src.zip”iskry 2.0.0

2

Natrafiłem na ten sam błąd. Właśnie zainstalowałem py4j.

Nie ma potrzeby ustawiania bashrc.

+0

To działało dla mnie na Windows 10 po restarcie jupytera – user18101

0

Jedyne, co dla mnie wyszło, to przejdź do folderu podstawowego iskry. następnie przejdź do accumulators.py

Na początku użyto nieprawidłowego polecenia wielowierszowego. usuń wszystko.

jesteś gotowy!