Apache spark 使用virtualenv在纱线/火花簇模式下运行python

Apache spark 使用virtualenv在纱线/火花簇模式下运行python,apache-spark,pyspark,virtualenv,yarn,Apache Spark,Pyspark,Virtualenv,Yarn,我在Thread/spark上的python应用程序无法识别requirements.txt文件,无法在工作节点上创建virtualenv,并继续使用全局环境。如果您能帮助解决此问题,我们将不胜感激 Spark版本:2.0.1 在我要在节点上重新创建的虚拟环境中运行pip freeze>requirements test.txt后提交脚本: /usr/bin/spark-submit --master yarn --deploy-mode client --conf spark.pyspark.

我在Thread/spark上的python应用程序无法识别requirements.txt文件,无法在工作节点上创建virtualenv,并继续使用全局环境。如果您能帮助解决此问题,我们将不胜感激

Spark版本:2.0.1

在我要在节点上重新创建的虚拟环境中运行
pip freeze>requirements test.txt
后提交脚本:

/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
My requirements-test.txt文件:

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
我的
/home/hadoop/python/spark\u 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__
从输出中,我看到它仍然只导入我的全局numpy包,而不是虚拟环境中的包:

//////////// works! //////////
/mnt/anaconda2/lib/python2.7/site-packages/numpy/__init__.pyc
PS:我在集群的所有节点上都安装了anaconda2

还有一点:如果我的spark submit选项更改为
--部署模式群集
,则输出不同:

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

Anaconda可能有一种通过Conda执行此操作的首选方法,但有一种想法是添加lifetimes utils.py、estimation.py等包中的所有文件,其中包含以下行:


SparkContext.addPyFile(“/full/铰接式/path/file.py”)

Anaconda可能有一种通过Conda执行此操作的首选方法,但一种想法是添加lifetimes utils.py、estimation.py等包中的所有文件,其中包含以下行:

SparkContext.addPyFile(“/full/铰接/path/file.py”)