在spark-submit上运行dataproc集群上的特定virtualenv,就像在vanilla Spark中

时间:2017-10-26 21:00:33

标签: pyspark virtualenv google-cloud-dataproc

当我在vanilla spark集群上运行,并希望针对特定的virtualenv运行pyspark脚本时,我可以创建虚拟环境,根据需要安装软件包,然后将环境压缩到一个文件中,让& #39; s说venv.zip

然后,在运行时,我可以执行

spark-submit --archives venv.zip#VENV --master yarn script.py

然后,只要我跑

在script.py中的

os.environ["PYSPARK_PYTHON"] = "VENV/bin/python",代码将针对虚拟环境运行,spark将处理为所有集群配置虚拟环境。

当我在dataproc上执行此操作时,首先,hadoop样式的哈希别名不起作用,其次,运行

gcloud dataproc jobs submit pyspark script.py --archives venv.zip --cluster <CLUSTER_NAME>

带有os.environ["PYSPARK_PYTHON"] = "venv.zip/bin/python"

将产生:

Error from python worker: venv/bin/python: 1: venv.zip/bin/python: Syntax error: word unexpected (expecting ")")

它清楚地看到了我的python可执行文件,并尝试对它运行,但实际上似乎存在某种解析错误。是什么赋予了?有没有办法将live python可执行文件以对抗vanilla spark群集的方式传递给dataproc?

1 个答案:

答案 0 :(得分:1)

原来我在操作系统中分发python二进制文件,并且已经愚蠢到没有注意到我这样做了,并且不兼容性导致了崩溃。