J'essaye d'exécuter un script python en utilisant un python personnalisé et de déployer --deploy-mode cluster
sur un cluster Enterprise 4.2.PYSPARK_PYTHON fonctionne avec le client --deploy-mode mais pas le cluster --deploy-mode
[[email protected] ~]$ hive
hive> CREATE TABLE pokes (foo INT, bar STRING);
OK
Time taken: 2.147 seconds
hive> LOAD DATA LOCAL INPATH '/usr/iop/4.2.0.0/hive/doc/examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;
Loading data to table default.pokes
Table default.pokes stats: [numFiles=1, numRows=0, totalSize=5812, rawDataSize=0]
OK
Time taken: 0.49 seconds
hive>
Puis-je créer un simple script pyspark:
[[email protected] ~]$ cat test_pokes.py
from pyspark import SparkContext
from pyspark.sql import HiveContext
sc = SparkContext()
hc = HiveContext(sc)
pokesRdd = hc.sql('select * from pokes')
print(pokesRdd.collect())
Je puis essayez d'exécuter le script comme ceci:
export PYSPARK_PYTHON=/home/biadmin/anaconda2/bin/python2.7
export PYSPARK_DRIVER_PYTHON=/home/biadmin/anaconda2/bin/python2.7
spark-submit --master yarn \
--deploy-mode cluster \
--jars /usr/iop/4.2.0.0/hive/lib/datanucleus-api-jdo-3.2.6.jar,/usr/iop/4.2.0.0/hive/lib/datanucleus-core-3.2.10.jar,/usr/iop/4.2.0.0/hive/lib/datanucleus-rdbms-3.2.9.jar \
--files /usr/iop/current/spark-client/conf/hive-site.xml \
test_pokes.py
Cela fonctionne sur le fil cluster mais n'utilise PAS le PYSPARK_PYTHON
variable
Cependant, si j'utilise --deploy-mode client
, PYSPARK_PYTHON
est utilisé ok.
Mise à jour
J'ai essayé d'ajouter ceci avant le SparkContext est initialisés:
os.environ["PYSPARK_PYTHON"] = '/home/biadmin/anaconda2/bin/python2.7'
os.environ["PYSPARK_DRIVER_PYTHON"] = '/home/biadmin/anaconda2/bin/python2.7'
aussi, tenté de mettre --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=/home/biadmin/anaconda2/bin/python2.7
Container: container_e09_1477084339086_0508_02_000001 on bi4c-xxxxxx-data-1.bi.services.bluemix.net_45454
==========================================================================================================
LogType:stderr
...
java.io.IOException: Cannot run program "/home/biadmin/anaconda2/bin/python2.7": error=2, No such file or directory
Cependant,
[[email protected] ~]$ ssh bi4c-xxxxxx-data-1.bi.services.bluemix.net
[[email protected] ~]$ ls /home/biadmin/anaconda2/bin/python2.7
/home/biadmin/anaconda2/bin/python2.7
Malheureusement, cela ne l'a pas fait: 'Fichier "/disk4/local/usercache/biadmin/appcache/application_1477084339086_0505/container_e09_1477084339086_0505_02_000002/pyspark.zip/pyspark/worker.py", ligne 64, dans le principal ("% d .% d "% sys.version_info [: 2], version)) Exception: Python dans le worker a une version 2.7 différente de celle du pilote 2.6, PySpark ne peut pas fonctionner avec différentes versions mineures –
Eh bien, mais le' os.environ' travaillé? L'erreur signifie que vous pointez vers une autre version de Python. Vous devez changer le python des travailleurs. –
J'ai ajouté 'print (sys.executable)' après avoir défini os.environ [".."] et malheureusement il montre '/ usr/bin/python' –