2015-06-10 13 views
10

Jestem nowy w Spark i próbuję zainstalować PySpark, odwołując się do poniższej strony.Kontekst Spark "sc" nie zdefiniowany

http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/

Próbowałem zainstalować zarówno prekompilowany pakiet, a także budując pakiet Spark thru SBT.

Kiedy próbuję uruchomić kod Pythona w IPython Notebook pojawia się następujący błąd.

NameError         Traceback (most recent call last) 
    <ipython-input-1-f7aa330f6984> in <module>() 
     1 # Check that Spark is working 
----> 2 largeRange = sc.parallelize(xrange(100000)) 
     3 reduceTest = largeRange.reduce(lambda a, b: a + b) 
     4 filterReduceTest = largeRange.filter(lambda x: x % 7 == 0).sum() 
     5 

     NameError: name 'sc' is not defined 

W oknie poleceń widzę poniższy błąd.

<strong>Failed to find Spark assembly JAR.</strong> 
<strong>You need to build Spark before running this program.</strong> 

Zauważ, że mam wiersz scala kiedy wykonywane zapłonie powłokę poleceń

Aktualizacja:

Z pomocą przyjaciela jestem w stanie rozwiązać problemu związanego Spark JAR zespołu, poprawiając zawartość pliku .ipython/profile_pyspark/startup/00-pyspark-setup.py

Mam teraz tylko problem ze zmienną Spark Context. Zmiana tytułu w celu właściwego odzwierciedlenia mojego aktualnego problemu.

Odpowiedz

12

Jednym z rozwiązań jest dodanie pyspark-shell do środowiska powłoki zmiennych PYSPARK_SUBMIT_ARGS:

export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell" 

There jest zmiana w python/pyspark/java_gateway.py, która wymaga PYSPARK_SUBMIT_ARGS zawiera pyspark-shell, jeśli zmienna PYSPARK_SUBMIT_ARGS jest ustawiona przez użytkownika.

+0

Czy ta zmiana to iskra 1.4? Być może właśnie dlatego 1.4 daje mi błąd podczas uruchamiania, ale 1.3.1 nie jest – venuktan

+1

tak, ponieważ 1.4.x. Chciałbym dodać komentarze. W rzeczywistości '$ SPARK_HOME/bin/pyspark' ma oficjalny sposób na uruchomienie pamięci ipython lub ipython. Dla 1.4.x, –

+0

Możesz uruchomić notatnik ipython lub ipython używając $ SPARK_HOME/bin/pyspark, sprawdź skrypt bash. PYSPARK_DRIVER_PYTHON = ipython $ SPARK_HOME/bin/pyspark PYSPARK_DRIVER_PYTHON = ipython PYSPARK_DRIVER_PYTHON_OPTS = 'notebook' $ SPARK_HOME/bin/pyspark –

24

trzeba wykonać następujące czynności po masz pyspark na swojej drodze:

from pyspark import SparkContext 
sc =SparkContext() 
+0

Dzięki Venu. Kiedy dodaję te linie, otrzymuję poniższy błąd. C: \ Spark \ spark-1.3.1-bin-hadoop2.6 \ python \ pyspark \ java_gateway.pyc w launch_gateway() 77 callback_socket.close() 78 jeśli gateway_port ma wartość None: ---> 79 raise Exception ("Proces bramy Java zakończył się przed wysłaniem sterownika numeru portu") 81 # Upewnij się, że procesy potomne Java nie zwlekają po zakończeniu działania Pythona. Wyjątek: proces bramy Java zakończył się przed wysłaniem sterownika o numerze portu – Arvind

+0

Nie jesteś pewien, co się tam dzieje, możesz podać mi nieco więcej kontekstu – venuktan

+0

idealny, ale myślę, że możesz sprawić, że kod będzie wyglądał lepiej, dodając kilka zapałek. – Statham

2

dodałem poniższe linie dostarczone przez Venu.

from pyspark import SparkContext 
sc =SparkContext() 

Następnie poniższy błąd został usunięty przez usunięcie zmiennej środowiskowej PYSPARK_SUBMIT_ARGS.

C:\Spark\spark-1.3.1-bin-hadoop2.6\python\pyspark\java_gateway.pyc in launch_gateway() 77 callback_socket.close() 78 if gateway_port is None: 
---> 79 raise Exception("Java gateway process exited before sending the driver its port number") 
80 
81 # In Windows, ensure the Java child processes do not linger after Python has exited. Exception: Java gateway process exited before sending the driver its port number 
0

Napotkano również komunikat o błędzie .

Mogłem rozwiązać ten problem, pobierając jedną z wersji, które są wstępnie zbudowane dla Hadoop (użyłem tej wersji dla hadoop 2.4). Ponieważ nie używam Hadoop, nie mam pojęcia, dlaczego to się zmieniło coś, ale teraz działa bezbłędnie dla mnie ...

0

Miałem ten sam problem w moim przypadku, gdy był inny notebook (w najnowszych wersjach są wyświetlane na zielono). Wybrałem i zamknąłem jedną z nich i wszystko działało dobrze.

Przepraszamy za wywoływanie stary wątek, ale może komuś pomóc :)

1

Spark na moim Macu jest 1.6.0 więc dodanie pyspark-shell nie rozwiązuje problemu. Co pracował dla mnie jest następująca odpowiedź udzieloną here przez @karenyng

pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "") if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell" os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args

1

I był już podobny błąd próbując dostać pySpark pracy poprzez pycharm i zauważyłem w dzienniku, tuż przed tym błędem byłem otrzymuję ten błąd:

env: nie znaleziono

Wywiodłem to w dół na fakt, że nie mają zmienną środowiskową do domu zestaw Java .. więc dodałem os.environ [ „JAVA_HOME”] = " /usr/java/jdk1.7.0_67-cloudera "

do mojego skryptu (zdaję sobie sprawę, że prawdopodobnie nie jest to najlepsze miejsce dla niego) a błąd wychodzi i dostaję mój obiekt iskra stworzony

5

tylko trochę lepszy. Dodaj kolejne u góry pliku skryptu Pythona.

#! /bin/python 
from pyspark import SparkContext, SparkConf 
sc =SparkContext() 

# your code starts here 
0

Skrypt ten pracował dla mnie (w Linuksie):

#!/bin/bash 

export PYSPARK_DRIVER_PYTHON=ipython 
export PYSPARK_DRIVER_PYTHON_OPTS="--pylab -c 'from pyspark import SparkContext; sc=SparkContext()' -i" 
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell" 

pyspark 

Aby połączyć pyspark jak Dzwonię tam jestem przy założeniu, że „iskra/bin” ścieżka instalacji jest w zmiennej PATH . Jeśli nie, zadzwoń pod numer /path/to/spark/bin/pyspark.

2

Musisz creat wystąpienie SparkContext jak następuje:

import:

from pyspark import SparkContext 

a następnie:

sc =SparkContext.getOrCreate() 

Uwaga: sc =SparkContext.getOrCreate() działa dobrze niż sc =SparkContext().