Jestem nowy z Apache Spark i najwyraźniej zainstalowałem Apache-Spark z Homebrew w moim Macbooku:
Last login: Fri Jan 8 12:52:04 on console
user@MacBook-Pro-de-User-2:~$ pyspark
Python 2.7.10 (default, Jul 13 2015, 12:05:58)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
16/01/08 14:46:44 INFO SparkContext: Running Spark version 1.5.1
16/01/08 14:46:46 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/01/08 14:46:47 INFO SecurityManager: Changing view acls to: user
16/01/08 14:46:47 INFO SecurityManager: Changing modify acls to: user
16/01/08 14:46:47 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(user); users with modify permissions: Set(user)
16/01/08 14:46:50 INFO Slf4jLogger: Slf4jLogger started
16/01/08 14:46:50 INFO Remoting: Starting remoting
16/01/08 14:46:51 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:50199]
16/01/08 14:46:51 INFO Utils: Successfully started service 'sparkDriver' on port 50199.
16/01/08 14:46:51 INFO SparkEnv: Registering MapOutputTracker
16/01/08 14:46:51 INFO SparkEnv: Registering BlockManagerMaster
16/01/08 14:46:51 INFO DiskBlockManager: Created local directory at /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/blockmgr-769e6f91-f0e7-49f9-b45d-1b6382637c95
16/01/08 14:46:51 INFO MemoryStore: MemoryStore started with capacity 530.0 MB
16/01/08 14:46:52 INFO HttpFileServer: HTTP File server directory is /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/spark-8e4749ea-9ae7-4137-a0e1-52e410a8e4c5/httpd-1adcd424-c8e9-4e54-a45a-a735ade00393
16/01/08 14:46:52 INFO HttpServer: Starting HTTP Server
16/01/08 14:46:52 INFO Utils: Successfully started service 'HTTP file server' on port 50200.
16/01/08 14:46:52 INFO SparkEnv: Registering OutputCommitCoordinator
16/01/08 14:46:52 INFO Utils: Successfully started service 'SparkUI' on port 4040.
16/01/08 14:46:52 INFO SparkUI: Started SparkUI at http://192.168.1.64:4040
16/01/08 14:46:53 WARN MetricsSystem: Using default name DAGScheduler for source because spark.app.id is not set.
16/01/08 14:46:53 INFO Executor: Starting executor ID driver on host localhost
16/01/08 14:46:53 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 50201.
16/01/08 14:46:53 INFO NettyBlockTransferService: Server created on 50201
16/01/08 14:46:53 INFO BlockManagerMaster: Trying to register BlockManager
16/01/08 14:46:53 INFO BlockManagerMasterEndpoint: Registering block manager localhost:50201 with 530.0 MB RAM, BlockManagerId(driver, localhost, 50201)
16/01/08 14:46:53 INFO BlockManagerMaster: Registered BlockManager
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 1.5.1
/_/
Using Python version 2.7.10 (default, Jul 13 2015 12:05:58)
SparkContext available as sc, HiveContext available as sqlContext.
>>>
Chciałbym zacząć grać, aby dowiedzieć się więcej o MLlib. Jednak używam Pycharm do pisania skryptów w Pythonie. Problem w tym, że kiedy idę do Pycharmu i próbuję zadzwonić do pyspark, Pycharm nie może znaleźć modułu. Próbowałem dodać ścieżkę do Pycharm w następujący sposób:
Następnie z bloga próbowałem tego:
import os
import sys
# Path for spark source folder
os.environ['SPARK_HOME']="/Users/user/Apps/spark-1.5.2-bin-hadoop2.4"
# Append pyspark to Python Path
sys.path.append("/Users/user/Apps/spark-1.5.2-bin-hadoop2.4/python/pyspark")
try:
from pyspark import SparkContext
from pyspark import SparkConf
print ("Successfully imported Spark Modules")
except ImportError as e:
print ("Can not import Spark Modules", e)
sys.exit(1)
I nadal nie mogę zacząć używać PySpark z Pycharm, jakikolwiek pomysł jak "połączyć" PyCharm z apache-pyspark ?.
Aktualizacja:
Następnie szukam ścieżki apache-spark i python, aby ustawić zmienne środowiskowe Pycharm:
ścieżka iskry apache:
user@MacBook-Pro-User-2:~$ brew info apache-spark
apache-spark: stable 1.6.0, HEAD
Engine for large-scale data processing
https://spark.apache.org/
/usr/local/Cellar/apache-spark/1.5.1 (649 files, 302.9M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/apache-spark.rb
ścieżka do Pythona:
user@MacBook-Pro-User-2:~$ brew info python
python: stable 2.7.11 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org
/usr/local/Cellar/python/2.7.10_2 (4,965 files, 66.9M) *
Następnie z powyższymi informacjami próbowałem ustawić zmienne środowiskowe w następujący sposób:
Masz pomysł, jak poprawnie połączyć Pycharm z Pyspark?
Wtedy, gdy uruchamiam skrypt w Pythonie z powyższą konfiguracją, mam ten wyjątek:
/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/user/PycharmProjects/spark_examples/test_1.py
Traceback (most recent call last):
File "/Users/user/PycharmProjects/spark_examples/test_1.py", line 1, in <module>
from pyspark import SparkContext
ImportError: No module named pyspark
AKTUALIZACJA: Następnie wypróbowałem te konfiguracje zaproponowane przez @ zero323
Konfiguracja 1:
/usr/local/Cellar/apache-spark/1.5.1/
na zewnątrz:
user@MacBook-Pro-de-User-2:/usr/local/Cellar/apache-spark/1.5.1$ ls
CHANGES.txt NOTICE libexec/
INSTALL_RECEIPT.json README.md
LICENSE bin/
Konfiguracja 2:
/usr/local/Cellar/apache-spark/1.5.1/libexec
na zewnątrz:
user@MacBook-Pro-de-User-2:/usr/local/Cellar/apache-spark/1.5.1/libexec$ ls
R/ bin/ data/ examples/ python/
RELEASE conf/ ec2/ lib/ sbin/
spark-defaults.conf
), albo za pomocą argumentów przesyłania - tak samo jak w przypadku notatnika Jupyter . Jeśli wolisz tę opcję, argumenty Submit można zdefiniować w zmiennych środowiskowych PyCharm zamiast w kodzie.Oto, jak rozwiązałem to na Mac OSX.
brew install apache-spark
Dodaj to do ~ / .bash_profile
export SPARK_VERSION=`ls /usr/local/Cellar/apache-spark/ | sort | tail -1` export SPARK_HOME="/usr/local/Cellar/apache-spark/$SPARK_VERSION/libexec" export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
Dodaj pyspark i py4j do katalogu głównego zawartości (użyj poprawnej wersji Spark):
/usr/local/Cellar/apache-spark/1.6.1/libexec/python/lib/py4j-0.9-src.zip /usr/local/Cellar/apache-spark/1.6.1/libexec/python/lib/pyspark.zip
źródło
$SPARK_HOME/python
w ścieżce klasy interpretera i dodałem zmienne środowiskowe i działa zgodnie z oczekiwaniami.Add pyspark and py4j to content root (use the correct Spark version)
pomogła mi w ukończeniu kodu. Jak udało ci się to osiągnąć, zmieniając tłumacza projektu?Oto konfiguracja, która działa dla mnie (Win7 64bit, PyCharm2017.3CE)
Skonfiguruj Intellisense:
Śmiało i wypróbuj swoje nowe możliwości IntelliSense.
źródło
Skonfiguruj Pyspark w Pycharm (Windows)
File menu - settings - project interpreter - (gearshape) - more - (treebelowfunnel) - (+) - [add python folder form spark installation and then py4j-*.zip] - click ok
Upewnij się, że SPARK_HOME jest ustawiony w środowisku Windows, pycharm weźmie stamtąd. Potwierdzać :
Opcjonalnie ustaw SPARK_CONF_DIR w zmiennych środowiskowych.
źródło
Użyłem następującej strony jako odniesienia i udało mi się pobrać pyspark / Spark 1.6.1 (zainstalowany przez homebrew) zaimportowany w PyCharm 5.
http://renien.com/blog/accessing-pyspark-pycharm/
import os import sys # Path for spark source folder os.environ['SPARK_HOME']="/usr/local/Cellar/apache-spark/1.6.1" # Append pyspark to Python Path sys.path.append("/usr/local/Cellar/apache-spark/1.6.1/libexec/python") try: from pyspark import SparkContext from pyspark import SparkConf print ("Successfully imported Spark Modules") except ImportError as e: print ("Can not import Spark Modules", e) sys.exit(1)
Z powyższym pyspark ładuje się, ale pojawia się błąd bramy, gdy próbuję utworzyć SparkContext. Występuje pewien problem ze Sparkiem z homebrew, więc po prostu pobrałem Spark ze strony internetowej Spark (pobrałem wstępnie zbudowany dla Hadoop 2.6 i nowszych) i wskazałem na katalogi Spark i py4j poniżej. Oto kod w pycharm, który działa!
import os import sys # Path for spark source folder os.environ['SPARK_HOME']="/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6" # Need to Explicitly point to python3 if you are using Python 3.x os.environ['PYSPARK_PYTHON']="/usr/local/Cellar/python3/3.5.1/bin/python3" #You might need to enter your local IP #os.environ['SPARK_LOCAL_IP']="192.168.2.138" #Path for pyspark and py4j sys.path.append("/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6/python") sys.path.append("/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6/python/lib/py4j-0.9-src.zip") try: from pyspark import SparkContext from pyspark import SparkConf print ("Successfully imported Spark Modules") except ImportError as e: print ("Can not import Spark Modules", e) sys.exit(1) sc = SparkContext('local') words = sc.parallelize(["scala","java","hadoop","spark","akka"]) print(words.count())
Te instrukcje pomogły mi w rozwiązywaniu problemów w PyDev, a następnie w uruchomieniu PyCharm - https://enahwe.wordpress.com/2015/11/25/how-to-configure-eclipse-for-developing -with-python-and-spark-on-hadoop /
Jestem pewien, że ktoś spędził kilka godzin waląc głową w monitor, próbując to uruchomić, więc miejmy nadzieję, że pomoże to zachować zdrowie psychiczne!
źródło
Używam
conda
do zarządzania pakietami Pythona. Więc wszystko, co zrobiłem na terminalu poza PyCharm, to:lub, jeśli chcesz mieć wcześniejszą wersję, powiedz 2.2.0, wykonaj:
conda install pyspark=2.2.0
To automatycznie pobiera również py4j. PyCharm nie narzekał już na to,
import pyspark...
a uzupełnianie kodu również działało. Zauważ, że mój projekt PyCharm został już skonfigurowany do używania interpretera Pythona, który jest dostarczany z Anacondą.źródło
Obejrzyj ten film.
Załóżmy, że katalog Spark Python to:
/home/user/spark/python
Załóżmy, że Twoje źródło Py4j to:
/home/user/spark/python/lib/py4j-0.9-src.zip
Zasadniczo dodajesz katalog spark python i katalog py4j w nim do ścieżek interpretera. Nie mam wystarczającej reputacji, aby opublikować zrzut ekranu.
W filmie użytkownik tworzy wirtualne środowisko w samym pycharmie, jednak można utworzyć wirtualne środowisko poza pycharmem lub aktywować istniejące wcześniej środowisko wirtualne, a następnie rozpocząć pycharm z nim i dodać te ścieżki do ścieżek interpretera środowiska wirtualnego z w ramach pycharm.
Użyłem innych metod, aby dodać iskrę za pomocą zmiennych środowiskowych basha, co działa świetnie poza pycharmem, ale z jakiegoś powodu nie zostały rozpoznane w pycharm, ale ta metoda działała doskonale.
źródło
SparkContext
obiektu na początku swojego skryptu. Zwracam na to uwagę, ponieważ użycie interaktywnej konsoli pyspark z wiersza poleceń automatycznie tworzy kontekst dla Ciebie, podczas gdy w PyCharm musisz sam się tym zająć; składnia byłaby następująca:sc = SparkContext()
Musisz skonfigurować PYTHONPATH, SPARK_HOME przed uruchomieniem IDE lub Pythona.
Windows, edytuj zmienne środowiskowe, dodaj Spark Python i py4j do
Unix,
źródło
Najprostszym sposobem jest zainstalowanie PySpark przez interpreter projektu.
źródło
Z dokumentacji :
Wywołujesz swój skrypt bezpośrednio za pomocą interpretera języka CPython, co moim zdaniem powoduje problemy.
Spróbuj uruchomić skrypt z:
"${SPARK_HOME}"/bin/spark-submit test_1.py
Jeśli to zadziała, powinieneś być w stanie uruchomić go w PyCharm, ustawiając interpreter projektu na spark-submit.
źródło
bin/pyspark
Postępowałem zgodnie z samouczkami on-line i dodałem zmienne env do .bashrc:
# add pyspark to python export SPARK_HOME=/home/lolo/spark-1.6.1 export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
Wtedy właśnie otrzymałem wartość w SPARK_HOME i PYTHONPATH do pycharm:
(srz-reco)lolo@K:~$ echo $SPARK_HOME /home/lolo/spark-1.6.1 (srz-reco)lolo@K:~$ echo $PYTHONPATH /home/lolo/spark-1.6.1/python/lib/py4j-0.9-src.zip:/home/lolo/spark-1.6.1/python/:/home/lolo/spark-1.6.1/python/lib/py4j-0.9-src.zip:/home/lolo/spark-1.6.1/python/:/python/lib/py4j-0.8.2.1-src.zip:/python/:
Następnie skopiowałem go do Run / Debug Configurations -> Zmienne środowiskowe skryptu.
źródło
Użyłem pycharm do połączenia Pythona i Spark. Miałem preinstalowane Java i Spark na moim komputerze.
Oto kroki, które wykonałem
Utwórz nowy projekt
W Ustawieniach nowego projektu -> wybrałem Python3.7 (venv) jako mój python. To jest plik python.exe obecny w folderze venv wewnątrz mojego nowego projektu. Możesz podać dowolnego Pythona dostępnego na twoim komputerze.
W ustawieniach -> Struktura projektu -> Dodaj Content_Root
Dodałem dwa foldery zip jako katalogi Spark
Utwórz plik Pythona w nowym projekcie. Następnie przejdź do Edytuj konfiguracje (w menu rozwijanym w prawym górnym rogu) i wybierz Zmienne środowiskowe
Użyłem poniższych zmiennych środowiskowych i działało dobrze
możesz dodatkowo pobrać winutils.exe i umieścić go w ścieżce C: \ Users \ USER \ winutils \ bin
Podaj te same zmienne środowiskowe w Edytuj konfiguracje -> Szablony
Przejdź do Ustawienia -> Interpreter projektu -> importuj pyspark
Uruchom swój pierwszy program Pyspark!
źródło
Ten samouczek z pyspark_xray , narzędzia umożliwiającego debugowanie kodu pyspark w PyCharm, może odpowiedzieć na Twoje pytanie. Obejmuje zarówno system Windows, jak i Mac.
Przygotowanie
java
polecenie, jeśli pojawi się błąd, pobierz i zainstaluj java (wersja 1.8.0_221 od kwietnia 2020)winutils.exe
wc:\spark-x.x.x-bin-hadoopx.x\bin
folderze, bez tego pliku wykonywalnego wystąpi błąd podczas zapisywania danych wyjściowych silnikapip install pyspark
lubconda install pyspark
Uruchom konfigurację
Uruchamiasz aplikację Spark w klastrze z wiersza polecenia, wydając
spark-submit
polecenie, które przesyła zadanie Spark do klastra. Ale z PyCharm lub innego IDE na lokalnym laptopie lub komputerzespark-submit
nie można go użyć do rozpoczęcia pracy ze Spark. Zamiast tego wykonaj następujące kroki, aby skonfigurować Uruchomienie konfiguracji demo_app pyspark_xray w PyCharmHADOOP_HOME
wartość naC:\spark-2.4.5-bin-hadoop2.7
SPARK_HOME
wartość naC:\spark-2.4.5-bin-hadoop2.7
pyspark_xray
z GithubPYTHONUNBUFFERED=1;PYSPARK_PYTHON=python;PYTHONPATH=$SPARK_HOME/python;PYSPARK_SUBMIT_ARGS=pyspark-shell;
driver.py
do pyspark_xray> demo_appdriver-run-config
źródło
Najłatwiej jest
Zrestartuj pycharm, aby zaktualizować indeks. Wspomniane powyżej dwa foldery znajdują się w folderze spark / python instalacji Spark. W ten sposób otrzymasz sugestie uzupełniania kodu również z pycharm.
źródło
Próbowałem dodać moduł pyspark przez menu Project Interpreter, ale to nie wystarczyło ... istnieje wiele zmiennych środowiskowych systemu, które należy ustawić jak
SPARK_HOME
i ścieżkę do/hadoop/bin/winutils.exe
, aby odczytać lokalne pliki danych. Musisz także używać poprawnych wersji Pythona, JRE, JDK, wszystkich dostępnych w zmiennych środowiskowych systemu iPATH
. Po częstym wyszukiwaniu w Google instrukcje w tych filmach zadziałałyźródło