Ich bin neu mit Apache Spark und habe anscheinend Apache-Spark mit Homebrew in meinem MacBook installiert:
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.
>>>
Ich würde gerne anfangen zu spielen, um mehr über MLlib zu erfahren. Ich benutze Pycharm jedoch, um Skripte in Python zu schreiben. Das Problem ist: Wenn ich zu Pycharm gehe und versuche, pyspark aufzurufen, kann Pycharm das Modul nicht finden. Ich habe versucht, den Pfad zu Pycharm wie folgt hinzuzufügen:
Dann habe ich in einem Blog Folgendes versucht:
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)
Und kann immer noch nicht anfangen, PySpark mit Pycharm zu verwenden, eine Idee, wie man PyCharm mit Apache-Pyspark "verknüpft"?.
Aktualisieren:
Dann suche ich nach Apache-Spark- und Python-Pfad, um die Umgebungsvariablen von Pycharm festzulegen:
Apache-Funken-Pfad:
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
Python-Pfad:
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) *
Dann habe ich mit den obigen Informationen versucht, die Umgebungsvariablen wie folgt festzulegen:
Irgendeine Idee, wie man Pycharm richtig mit pyspark verbindet?
Wenn ich dann ein Python-Skript mit der obigen Konfiguration ausführe, habe ich diese Ausnahme:
/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
AKTUALISIEREN: Dann habe ich diese von @ zero323 vorgeschlagenen Konfigurationen ausprobiert
Konfiguration 1:
/usr/local/Cellar/apache-spark/1.5.1/
aus:
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/
Konfiguration 2:
/usr/local/Cellar/apache-spark/1.5.1/libexec
aus:
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
) oder über Submit Args - genau wie bei Jupyter Notebook . Übermittlungsargumente können in den Umgebungsvariablen von PyCharm anstelle von Code definiert werden, wenn Sie diese Option bevorzugen.Hier ist, wie ich das auf Mac OSX gelöst habe.
brew install apache-spark
Fügen Sie dies zu ~ / .bash_profile hinzu
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
Fügen Sie pyspark und py4j zum Inhaltsstamm hinzu (verwenden Sie die richtige Spark-Version):
/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
quelle
$SPARK_HOME/python
in den Interpreter-Klassenpfad eingefügt und die Umgebungsvariablen hinzugefügt, und es funktioniert wie erwartet.Add pyspark and py4j to content root (use the correct Spark version)
half mir bei der Code-Vervollständigung. Wie haben Sie es geschafft, den Projektinterpreter zu ändern?Hier ist das Setup, das für mich funktioniert (Win7 64bit, PyCharm2017.3CE)
Intellisense einrichten:
Testen Sie Ihre neuen Intellisense-Funktionen.
quelle
Konfigurieren Sie pyspark in pycharm (Windows)
File menu - settings - project interpreter - (gearshape) - more - (treebelowfunnel) - (+) - [add python folder form spark installation and then py4j-*.zip] - click ok
Stellen Sie sicher, dass SPARK_HOME in der Windows-Umgebung festgelegt ist. Pycharm übernimmt von dort aus. Bestätigen :
Optional können Sie SPARK_CONF_DIR in Umgebungsvariablen festlegen.
quelle
Ich habe die folgende Seite als Referenz verwendet und konnte pyspark / Spark 1.6.1 (über Homebrew installiert) in PyCharm 5 importieren lassen.
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)
Mit dem oben genannten wird pyspark geladen, aber ich erhalte einen Gateway-Fehler, wenn ich versuche, einen SparkContext zu erstellen. Es gibt ein Problem mit Spark von Homebrew, also habe ich Spark von der Spark-Website abgerufen (laden Sie das Pre-Built für Hadoop 2.6 und höher herunter) und verweise auf die Spark- und py4j-Verzeichnisse darunter. Hier ist der Code in Pycharm, der funktioniert!
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())
Ich hatte viel Hilfe von diesen Anweisungen, die mir geholfen haben, Fehler in PyDev zu beheben und es dann zum Laufen zu bringen. PyCharm - https://enahwe.wordpress.com/2015/11/25/how-to-configure-eclipse-for-developing -mit-Python-und-Funken-auf-Hadoop /
Ich bin sicher, jemand hat ein paar Stunden damit verbracht, seinen Kopf gegen seinen Monitor zu schlagen, um dies zum Laufen zu bringen. Hoffentlich hilft dies dabei, seine geistige Gesundheit zu retten!
quelle
Ich
conda
verwalte meine Python-Pakete. Alles, was ich in einem Terminal außerhalb von PyCharm getan habe, war:Wenn Sie eine frühere Version wünschen, sagen Sie 2.2.0, und tun Sie Folgendes:
conda install pyspark=2.2.0
Dies zieht automatisch auch py4j ein. PyCharm beschwerte sich dann nicht mehr
import pyspark...
und die Code-Vervollständigung funktionierte auch. Beachten Sie, dass mein PyCharm-Projekt bereits für die Verwendung des mit Anaconda gelieferten Python-Interpreters konfiguriert wurde.quelle
Schauen Sie sich dieses Video an.
Angenommen, Ihr Spark-Python-Verzeichnis lautet:
/home/user/spark/python
Angenommen, Ihre Py4j-Quelle lautet:
/home/user/spark/python/lib/py4j-0.9-src.zip
Grundsätzlich fügen Sie das Spark-Python-Verzeichnis und das darin enthaltene py4j-Verzeichnis zu den Interpreter-Pfaden hinzu. Ich habe nicht genug Ruf, um einen Screenshot zu posten, oder ich würde es tun.
In dem Video erstellt der Benutzer eine virtuelle Umgebung innerhalb von Pycharm selbst. Sie können jedoch die virtuelle Umgebung außerhalb von Pycharm erstellen oder eine bereits vorhandene virtuelle Umgebung aktivieren, Pycharm damit starten und diese Pfade zu den Interpreterpfaden der virtuellen Umgebung hinzufügen innerhalb von Pycharm.
Ich habe andere Methoden verwendet, um Funken über die Bash-Umgebungsvariablen hinzuzufügen, was außerhalb von Pycharm hervorragend funktioniert, aber aus irgendeinem Grund wurden sie in Pycharm nicht erkannt, aber diese Methode hat perfekt funktioniert.
quelle
SparkContext
Objekt am Anfang Ihres Skripts instanziieren müssen, wenn Sie der Videomethode folgen (was meine Empfehlung für ihre Geschwindigkeit und Einfachheit wäre) . Ich stelle dies fest, da die Verwendung der interaktiven pyspark-Konsole über die Befehlszeile automatisch den Kontext für Sie erstellt, während Sie sich in PyCharm selbst darum kümmern müssen. Syntax wäre:sc = SparkContext()
Sie müssen PYTHONPATH, SPARK_HOME einrichten, bevor Sie IDE oder Python starten.
Windows, Umgebungsvariablen bearbeiten, Spark Python und py4j hinzufügen
Unix,
quelle
Am einfachsten ist es, PySpark über einen Projektinterpreter zu installieren.
quelle
Aus der Dokumentation :
Sie rufen Ihr Skript direkt mit dem CPython-Interpreter auf, was meiner Meinung nach Probleme verursacht.
Versuchen Sie, Ihr Skript auszuführen mit:
"${SPARK_HOME}"/bin/spark-submit test_1.py
Wenn dies funktioniert, sollten Sie in der Lage sein, es in PyCharm zum Laufen zu bringen, indem Sie den Interpreter des Projekts auf Spark-Submit einstellen.
quelle
bin/pyspark
Ich folgte den Tutorials online und fügte die env-Variablen zu .bashrc hinzu:
# 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
Ich habe dann gerade den Wert in SPARK_HOME und PYTHONPATH für pycharm erhalten:
(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/:
Dann habe ich es in Run / Debug Configurations -> Umgebungsvariablen des Skripts kopiert.
quelle
Ich habe Pycharm verwendet, um Python und Funken zu verbinden. Ich hatte Java und Spark auf meinem PC vorinstalliert.
Dies sind die Schritte, denen ich gefolgt bin
Neues Projekt erstellen
In den Einstellungen für neues Projekt -> habe ich Python3.7 (venv) als Python ausgewählt. Dies ist die Datei python.exe, die sich im Ordner venv in meinem neuen Projekt befindet. Sie können jede Python geben, die auf Ihrem PC verfügbar ist.
In den Einstellungen -> Projektstruktur -> Content_Root hinzufügen
Ich habe zwei Zip-Ordner als Spark-Verzeichnisse hinzugefügt
Erstellen Sie eine Python-Datei im neuen Projekt. Gehen Sie dann zu Konfigurationen bearbeiten (in der Dropdown-Liste oben rechts) und wählen Sie Umgebungsvariablen
Ich habe die folgenden Umgebungsvariablen verwendet und es hat gut für mich funktioniert
Möglicherweise möchten Sie zusätzlich winutils.exe herunterladen und im Pfad C: \ Users \ USER \ winutils \ bin ablegen
Geben Sie die gleichen Umgebungsvariablen in Konfigurationen bearbeiten -> Vorlagen an
Gehen Sie zu Einstellungen -> Projektinterpreter -> pyspark importieren
Führen Sie Ihr erstes Pyspark-Programm aus!
quelle
Dieses Tutorial von pyspark_xray , einem Tool zum Debuggen von Pyspark-Code auf PyCharm, kann Ihre Frage beantworten. Es deckt sowohl Windows als auch Mac ab.
Vorbereitung
java
Befehl. Wenn Sie eine Fehlermeldung erhalten, laden Sie Java herunter und installieren Sie es (Version 1.8.0_221 ab April 2020).winutils.exe
in einemc:\spark-x.x.x-bin-hadoopx.x\bin
Ordner ohne diese ausführbare Datei tritt beim Schreiben der Engine-Ausgabe ein Fehler aufpip install pyspark
oderconda install pyspark
Konfiguration ausführen
Sie führen die Spark-Anwendung in einem Cluster über die Befehlszeile aus, indem Sie einen Befehl ausgeben
spark-submit
, der einen Spark-Job an den Cluster sendet. Mit PyCharm oder einer anderen IDE auf einem lokalen Laptop oder PCspark-submit
kann jedoch kein Spark-Job gestartet werden. Führen Sie stattdessen die folgenden Schritte aus, um eine Ausführungskonfiguration der demo_app von pyspark_xray auf PyCharm einzurichtenHADOOP_HOME
SollwertC:\spark-2.4.5-bin-hadoop2.7
SPARK_HOME
SollwertC:\spark-2.4.5-bin-hadoop2.7
pyspark_xray
von Github zu klonenPYTHONUNBUFFERED=1;PYSPARK_PYTHON=python;PYTHONPATH=$SPARK_HOME/python;PYSPARK_SUBMIT_ARGS=pyspark-shell;
driver.py
von pyspark_xray> demo_appTreiber-Run-Konfiguration
quelle
Der einfachste Weg ist
Starten Sie pycharm neu, um den Index zu aktualisieren. Die beiden oben genannten Ordner befinden sich im Spark / Python-Ordner Ihrer Spark-Installation. Auf diese Weise erhalten Sie Vorschläge zur Code-Vervollständigung auch von pycharm.
quelle
Ich habe versucht, das pyspark-Modul über das Project Interpreter-Menü hinzuzufügen, aber es hat nicht gereicht ... Es gibt eine Reihe von Systemumgebungsvariablen, die wie
SPARK_HOME
folgt festgelegt werden müssen, und einen Pfad,/hadoop/bin/winutils.exe
zu dem lokale Datendateien gelesen werden können. Sie müssen auch korrekte Versionen von Python, JRE, JDK verwenden, die alle in Systemumgebungsvariablen und verfügbar sindPATH
. Nachdem ich viel gegoogelt hatte, funktionierten die Anweisungen in diesen Videosquelle