背景: 当我们的代码逻辑依赖于一个虚拟环境,怎么将这个环境在一个分布式集群中使用呢?
1 我们有一个django项目,里面有venv的虚拟环境
我们需要打包这个环境:
zip -r ai-alg.zip ai-alg
2 程序执行命令
主要看椭圆的部分
参数说明:
–conf spark.pyspark.python=./local_venv/local_venv/bin/python #executor集群端的pyspark配置,即任务执行的机器
–conf spark.pyspark.driver.python=/data/home/niulijun/local_venv/bin/python #dirver端的pyspark配置,driver端就是你的sparkcontext所在的机器,driver如果是spark-submit yarn-client是当前提交的机器上,如果是yarn-cluster 是随机找一台机器
3
问题与答案
每一次启动上传的虚拟环境就浪费很多时间
所以{12} 处的路径改为hdfs 的路径,提前上传好就行了。这样会节省时间。
以上的提交方式 如果时只有yarn 时候才会触发分发