2017-07-19 5 views
1

Meine Python-App auf Garn/Funken erkennt die Anforderungen.TXT-Datei nicht zu einem virtualenv auf den Arbeiter Knoten erstellen, und weiterhin die globale Umgebung zu verwenden. Jede Hilfe, um dies zu beheben, wäre sehr willkommen.Running Python in Garn/Funke Cluster-Modus mit virtualenv

Spark-Version: 2.0.1

Skript einreichen, nachdem pip freeze > requirements-test.txt innerhalb der virtuellen Umgebung ausgeführt wird, die ich an den Knoten neu erstellen möchten:

/usr/bin/spark-submit --master yarn --deploy-mode client --conf spark.pyspark.virtualenv.enabled=true --conf spark.pyspark.virtualenv.type=native --conf spark.pyspark.virtualenv.requirements=/mnt/py_env/requirements-test.txt --conf spark.pyspark.virtualenv.bin.path=/mnt/anaconda2/bin/virtualenv --conf spark.pyspark.python=/mnt/py_env/test/bin/python /home/hadoop/python/spark_virtualenv.py 

Meine anforderungs test.txt-Datei:

dill==0.2.7.1 
Lifetimes==0.8.0.0 
numpy==1.13.1 
pandas==0.20.3 
python-dateutil==2.6.1 
pytz==2017.2 
scipy==0.19.1 
six==1.10.0 

Mein /home/hadoop/python/spark_virtualenv.py:

from pyspark import SparkContext 
#import lifetimes 
if __name__ == "__main__": 
    sc = SparkContext(appName="Simple App") 
    import numpy as np 
    sc.parallelize(range(1,10)).map(lambda x : np.__version__).collect() 
    print "//////////// works! //////////" 
    #print lifetimes.__version__ 
    print np.__file__ 

Vom Ausgang, ich sehe, dass es nach wie vor nur Paket meiner globale numpy importiert und nicht den in der virtuellen Umgebung:

//////////// works! ////////// 
/mnt/anaconda2/lib/python2.7/site-packages/numpy/__init__.pyc 

PS: Ich anaconda2 auf allen Knoten meines Cluster installiert habe

ein weiterer Punkt: Wenn meine Funken einreichen Option --deploy-mode cluster geändert wird, dann ist der Ausgang anders:

//////////// works! ////////// 
/usr/local/lib64/python2.7/site-packages/numpy/__init__.pyc 

Antwort

0

Anaconda könnte eine bevorzugte Art und Weise haben, es zu tun durch Conda, aber ein Gedanke ist es, die Lebenszeiten utils.py, estimation.py, etc alle Dateien aus dem Paket mit den Zeilen hinzufügen:

SparkContext.addPyFile ("/ voll/artikuliert/Pfad/file.py")

Verwandte Themen