Dies ist eine Kopie der Frage eines anderen in einem anderen Forum, die nie beantwortet wurde. Daher dachte ich, ich würde sie hier erneut stellen, da ich das gleiche Problem habe. (Siehe http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736 )
Ich habe Spark ordnungsgemäß auf meinem Computer installiert und kann Python-Programme mit den pyspark-Modulen fehlerfrei ausführen, wenn ich ./bin/pyspark als meinen Python-Interpreter verwende.
Wenn ich jedoch versuche, die reguläre Python-Shell auszuführen und pyspark-Module zu importieren, wird folgende Fehlermeldung angezeigt:
from pyspark import SparkContext
und es heißt
"No module named pyspark".
Wie kann ich das beheben? Gibt es eine Umgebungsvariable, die ich festlegen muss, um Python auf die pyspark-Header / Bibliotheken / etc. Zu verweisen? Wenn meine Funkeninstallation / spark / ist, welche Pyspark-Pfade muss ich einschließen? Oder können Pyspark-Programme nur vom Pyspark-Interpreter ausgeführt werden?
quelle
Antworten:
Hier ist eine einfache Methode (Wenn Sie sich nicht darum kümmern, wie es funktioniert !!!)
Gehen Sie zu Ihrer Python-Shell
Importieren Sie die erforderlichen Module
Getan!!!
quelle
Wenn ein solcher Fehler ausgegeben wird:
Bitte fügen Sie $ SPARK_HOME / python / build zu PYTHONPATH hinzu:
quelle
Es stellt sich heraus, dass der pyspark bin Python lädt und automatisch die richtigen Bibliothekspfade lädt. Schauen Sie sich $ SPARK_HOME / bin / pyspark an:
Ich habe diese Zeile zu meiner .bashrc-Datei hinzugefügt und die Module wurden nun korrekt gefunden!
quelle
export SPARK_HOME=~/dev/spark-1.1.0
, go figure. Ihre Ordnernamen können variieren.Führen Sie Ihre py-Datei nicht wie folgt aus:
python filename.py
Verwenden Sie stattdessen:spark-submit filename.py
quelle
import pyspark
Befehl in der Befehlszeile oder in einem ausgeführten Skript fehl. Sie müssen entweder a. Führen Sie pyspark wie vorgesehen durch spark-submit aus oder b. Fügen Sie $ SPARK_HOME / python zu $ PYTHONPATH hinzu.Durch den Export des SPARK-Pfads und des Py4j-Pfads begann es zu funktionieren:
Wenn Sie diese also nicht jedes Mal eingeben möchten, wenn Sie die Python-Shell starten möchten, können Sie sie Ihrer
.bashrc
Datei hinzufügenquelle
Apache Spark
Installation nicht finden .libexec/python/build
Verzeichnis ist, aber Spark 1.6.2 hat das nichtAuf einem Mac installiere ich mit Homebrew Spark (Formel "Apache-Spark"). Dann habe ich den PYTHONPATH so eingestellt, dass der Python-Import funktioniert:
Ersetzen Sie "1.2.0" durch die aktuelle Apache-Spark-Version auf Ihrem Mac.
quelle
Für eine Spark-Ausführung in pyspark sind zwei Komponenten erforderlich, um zusammenzuarbeiten:
pyspark
Python-PaketWenn Sie Dinge mit spark-submit oder pyspark starten, kümmern sich diese Skripte um beides, dh sie richten Ihren PYTHONPATH, PATH usw. so ein, dass Ihr Skript pyspark finden kann, und sie starten auch die spark-Instanz, die gemäß Ihren Parametern konfiguriert wird zB --master X.
Alternativ ist es möglich, diese Skripte zu umgehen und Ihre Spark-Anwendung direkt im Python-Interpreter wie auszuführen
python myscript.py
. Dies ist besonders interessant, wenn Spark-Skripte komplexer werden und schließlich ihre eigenen Argumente erhalten.getOrCreate()
vom Builder-Objekt aus aufrufen müssen .Ihr Skript kann daher ungefähr so aussehen:
quelle
Um loszuwerden
ImportError: No module named py4j.java_gateway
, müssen Sie folgende Zeilen hinzufügen:quelle
Unter Windows 10 hat Folgendes für mich funktioniert. Ich habe die folgenden Umgebungsvariablen über Einstellungen > Umgebungsvariablen für Ihr Konto bearbeiten hinzugefügt :
(Ändern Sie "C: \ Programming \ ..." in den Ordner, in dem Sie spark installiert haben.)
quelle
Für Linux-Benutzer ist das Folgende die richtige (und nicht fest codierte) Methode, um die pyspark libaray in PYTHONPATH aufzunehmen. Beide PATH-Teile sind notwendig:
Beachten Sie unten, dass die komprimierte Bibliotheksversion dynamisch bestimmt wird, sodass wir sie nicht fest codieren.
quelle
Ich verwende einen Spark-Cluster auf CentOS VM, der aus Cloudera Yum-Paketen installiert wird.
Musste die folgenden Variablen setzen, um pyspark auszuführen.
quelle
Dies habe ich getan, um meine Anaconda-Distribution mit Spark zu verwenden. Dies ist unabhängig von der Spark-Version. Sie können die erste Zeile in den Python-Bin Ihrer Benutzer ändern. Ab Spark 2.2.0 ist PySpark auch als eigenständiges Paket auf PyPi verfügbar, aber ich muss es noch testen.
quelle
Sie können das
pyspark path
in Python wiepip
folgt herunterladen (wenn Sie pyspark mit PIP installiert haben)quelle
Ich hatte das gleiche Problem.
Stellen Sie außerdem sicher, dass Sie die richtige Python-Version verwenden und diese mit der richtigen Pip-Version installieren. in meinem Fall: Ich hatte sowohl Python 2.7 als auch 3.x. Ich habe pyspark mit installiert
pip2.7 installiere pyspark
und es hat funktioniert.
quelle
Ich habe diesen Fehler erhalten, weil das Python-Skript, das ich einreichen wollte, pyspark.py ( facepalm ) heißt. Das Update bestand darin, meinen PYTHONPATH wie oben empfohlen festzulegen, das Skript dann in pyspark_test.py umzubenennen und die pyspark.pyc zu bereinigen, die basierend auf dem ursprünglichen Namen meines Skripts erstellt wurde und diesen Fehler behoben hat.
quelle
Im Fall von DSE (DataStax Cassandra & Spark) Der folgende Speicherort muss zu PYTHONPATH hinzugefügt werden
Verwenden Sie dann den dse pyspark, um die Module in den Pfad zu bringen.
quelle
Ich hatte das gleiche Problem und würde eine Sache zu den oben vorgeschlagenen Lösungen hinzufügen. Wenn Sie Homebrew unter Mac OS X zur Installation von Spark verwenden, müssen Sie die py4j-Pfadadresse korrigieren, um libexec in den Pfad aufzunehmen (denken Sie daran, die py4j-Version in die von Ihnen verwendete zu ändern).
quelle
py4j
nur den Ordner zu verwenden. Es hat nicht funktioniert. Verwenden Sie die Zip-Datei ...In meinem Fall wurde es mit einem anderen Python dist_package (Python 3.5) installiert, während ich Python 3.6 verwendete. Das Folgende half also:
quelle
Sie können auch einen Docker-Container mit Alpine als Betriebssystem erstellen und Python und Pyspark als Pakete installieren. Das wird alles containerisiert haben.
quelle