Hinzufügen von Jar zu eigenständigen pyspark
Starte ich eine pyspark Programm:
$ export SPARK_HOME=
$ export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip
$ python
Und dem py-code:
from pyspark import SparkContext, SparkConf
SparkConf().setAppName("Example").setMaster("local[2]")
sc = SparkContext(conf=conf)
Wie füge ich jar-Abhängigkeiten, wie etwa die Databricks csv-jar? Über die Befehlszeile kann ich hinzufügen das Paket wie dieses:
$ pyspark/spark-submit --packages com.databricks:spark-csv_2.10:1.3.0
Aber ich bin nicht mit jedem dieser. Das Programm ist Teil eines größeren workflow, der nicht mit Funken-submit ich sollte in der Lage sein, um mein ./foo.py Programm und es sollte einfach funktionieren.
- Ich weiß, können Sie die spark-Eigenschaften für extraClassPath aber Sie müssen kopieren von JAR-Dateien zu jedem Knoten?
- Versucht conf.- Satz("der Funke.Gläser", "jar1,jar2"), dass hat nicht funktioniert, auch mit einem py4j CNF Ausnahme
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele Ansätze hier (Einstellung ENV vars hinzufügen $SPARK_HOME/conf/Funke-defaults.conf, etc...) einige der Antworten, die bereits heute decken diese. Ich wollte noch hinzufügen eines zusätzliche Antwort für diejenigen, die speziell mit Jupyter Notebooks und die Erstellung des Spark-Sitzung innerhalb des Notebooks. Hier ist die Lösung, die funktionierte für mich am besten (in meinem Fall wollte ich die Kafka-Paket geladen):
Mithilfe dieser code-Zeile habe ich nicht brauchen, um etwas anderes zu tun (keine ENVs oder conf-Datei geändert).
jar -tvf fileName.jar | grep -i kafka
für jedes Glas in die Funke.../jars/
Verzeichnis, und nichts gefunden für kafka. Wo war Ihre Lage? Ich bin nicht unbedingt daran interessiert, kafka-pro-se; ich bin nur nach deinem Beispiel versuchen zu verallgemeinern.Alle Abhängigkeiten übergeben werden können, mit
spark.Gläser.packages
(Einstellungspark.Gläser
sollte auch funktionieren) - Eigenschaft in der$SPARK_HOME/conf/spark-defaults.conf
. Es sollte eine kommagetrennte Liste von Koordinaten.Und Pakete oder classpath Eigenschaften müssen festgelegt werden, bevor die JVM gestartet wird, und dies geschieht während der
SparkConf
Initialisierung. Es bedeutet, dassSparkConf.set
Methode hier nicht verwendet werden können.Alternativer Ansatz ist, um
PYSPARK_SUBMIT_ARGS
Umgebungsvariable vorSparkConf
- Objekt initialisiert wird:os.environ
setzt die Umgebung nur für den Prozess, in dem die python-kernel, aber alle Teilprozesse nicht Holen, diese environment-Variablen. In anderen Worten, es nicht zu tun, das äquivalent vonexport ...
. Irgendwelche Gedanken?subprocess.Popen
nimmtenv
argument, wo Sie übergeben eine Kopie der aktuellen Umgebung.Stieß ich auf ein ähnliches Problem bei einem anderen
jar
("MongoDB Connector für Spark",mongo-spark-connector
), aber der große Nachteil war, dass ich installiertSpark
überpyspark
imconda
(conda install pyspark
). Deshalb alle Unterstützung fürSpark
-spezifische Antworten waren nicht gerade hilfreich. Für diejenigen von Ihnen, die Installation mitconda
hier ist der Prozess, den ich zusammen gebastelt:1) Finden, wo Sie Ihre
pyspark/jars
befinden. Mir wurden in diesem Pfad:~/anaconda2/pkgs/pyspark-2.3.0-py27_0/lib/python2.7/site-packages/pyspark/jars
.2) Download die
jar
Datei in den Pfad der in Schritt 1 gefunden, von diese Lage.3) Nun sollten Sie in der Lage zu laufen, so etwas wie dieses (code entnommen MongoDB offizielle tutorial, mit Briford Wylie ' s Antwort oben):
Haftungsausschluss:
1) ich weiß nicht, ob diese Antwort ist der richtige Ort,/SO Frage dies; bitte geben Sie eine besseren Ort und ich werde es verschieben.
2) Wenn Sie denken, ich habe fehlerhaft oder haben die Verbesserung der Verfahren oben, bitte Kommentar, und ich werde überarbeiten.
Endlich die Antwort gefunden, nach mehreren versuchen. Die Antwort ist spezifisch für die Verwendung von spark-csv-Glas. Erstellen Sie einen Ordner, in den Sie die Festplatte sagen D:\Spark\spark_jars. Legen Sie die folgenden jar-Dateien, die es gibt:
2 und 3 sind die Abhängigkeiten erforderlich, die durch Funken -, csv -, also diese beiden Dateien, die heruntergeladen werden müssen auch. Gehen Sie zu Ihrem conf-Verzeichnis, in dem Sie heruntergeladen haben, zu Funken. In der Funke-defaults.conf Datei fügen Sie die Zeile:
Funken.- Treiber.extraClassPath D:/Spark/spark_jars/*
Die Sternchen sollten alle die Gläser. Jetzt führen Sie Python erstellen SparkContext SQLContext, wie Sie normalerweise würden. Jetzt sollten Sie in der Lage sein zu verwenden spark-csv-als
Hier kommt es....
Dann...