2016-04-04 20 views
2

Ich habe das graphframes-Paket (von here) heruntergeladen und auf meiner lokalen Festplatte gespeichert. Jetzt möchte ich es benutzen. So verwende ich den folgenden Befehl ein:Importieren von PySpark-Paketen

IPYTHON_OPTS="notebook --no-browser" pyspark --num-executors=4 --name gorelikboris_notebook_1 --py-files ~/temp/graphframes-0.1.0-spark1.5.jar --jars ~/temp/graphframes-0.1.0-spark1.5.jar --packages graphframes:graphframes:0.1.0-spark1.5 

die alle pyspark Funktionalität funktioniert wie erwartet, mit Ausnahme des neuen graphframes Paket: wenn ich zu import graphframes versuchen, erhalte ich eine ImportError. Wenn ich sys.path überprüfe, kann ich die folgenden zwei Pfade sehen:

/tmp/spark-1eXXX/userFiles-9XXX/graphframes_graphframes-0.1.0-spark1.5.jar und /tmp/spark-1eXXX/userFiles-9XXX/graphframes-0.1.0-spark1.5.jar, jedoch diese Dateien existieren nicht. Darüber hinaus ist das Verzeichnis /tmp/spark-1eXXX/userFiles-9XXX/ leer.

Was fehlt mir?

Antwort

1

Dies könnte ein Problem in Spark-Paketen mit Python im Allgemeinen sein. Ein anderer Benutzer hat dies zu einem früheren Zeitpunkt im Benutzeralias für den Spark-Benutzer gefragt.

Meine Problemumgehung besteht darin, das Jar zu entpacken, um den eingebetteten Python-Code zu finden, und dann den Python-Code in ein Unterverzeichnis namens graphframes zu verschieben.

Zum Beispiel, ich laufe pyspark aus meinem Home-Verzeichnis

~$ ls -lart 
drwxr-xr-x 2 user user 4096 Feb 24 19:55 graphframes 

~$ ls graphframes/ 
__init__.pyc examples.pyc graphframe.pyc tests.pyc 

Sie würden die py-Dateien oder Gläser Parameter nicht benötigen, aber so etwas wie

IPYTHON_OPTS="notebook --no-browser" pyspark --num-executors=4 --name gorelikboris_notebook_1 --packages graphframes:graphframes:0.1.0-spark1.5

und den Python mit Code im Verzeichnis graphframes sollte funktionieren.

0

Fügen Sie diese Zeilen zu Ihrem $ SPARK_HOME/conf/Funken defaults.conf:

spark.executor.extraClassPath file_path/jar1: file_path/jar2

spark.driver.extraClassPath file_path/jar1: file_path/jar2

0

in meinem Fall:

2, jar xf graphframes_graphframes-0.3.0-spark2.0-s_2.11.jar

3, fügen Sie oben auf PYTHONPATH in spark-env.sh wie Code /home/zh/.ivy2/jar:

export PYTHONPATH=$PYTHONPATH:/home/zh/.ivy2/jars:. 
0

Im allgemeineren Fall von 'verwaisten' Python-Datei importieren (außerhalb des aktuellen Ordners , nicht ordnungsgemäß installiert Paket Teil) - verwenden addPyFile, zB:

sc.addPyFile('somefolder/graphframe.zip') 

addPyFile (Pfad): eine Py oder .zip Abhängigkeit für alle Aufgaben auf dieser SparkContext in Zukunft hinzufügen ausgeführt werden. Der übergebene Pfad kann entweder eine lokale Datei, eine Datei in HDFS (oder anderen von Hadoop unterstützten Dateisystemen) oder eine HTTP-, HTTPS- oder FTP-URI sein.