Pyspark 在spark提交时在dataproc集群上运行特定的VirtualNV,就像在vanilla spark中一样

Pyspark 在spark提交时在dataproc集群上运行特定的VirtualNV,就像在vanilla spark中一样,pyspark,virtualenv,google-cloud-dataproc,Pyspark,Virtualenv,Google Cloud Dataproc,当我在vanilla spark集群上运行,并且想要针对特定virtualenv运行pyspark脚本时,我可以创建虚拟环境,根据需要安装软件包,然后将环境压缩到一个文件中,比如说venv.zip 然后,在运行时,我可以执行 spark提交--归档venv.zip#venv--主纱线脚本.py 然后,只要我跑 os.environ[“PYSPARK\u PYTHON”]=“VENV/bin/PYTHON”在script.py内部,代码将针对虚拟环境运行,spark将负责为我的所有集群提供虚拟环境

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

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

spark提交--归档venv.zip#venv--主纱线脚本.py

然后,只要我跑

os.environ[“PYSPARK\u PYTHON”]=“VENV/bin/PYTHON”
在script.py内部,代码将针对虚拟环境运行,spark将负责为我的所有集群提供虚拟环境

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

gcloud dataproc作业提交pyspark script.py--归档venv.zip--集群

使用
os.environ[“PYSPARK\u PYTHON”]=“venv.zip/bin/PYTHON”
将生成:

python worker的
错误:
venv/bin/python:1:venv.zip/bin/python:Syntax error:word unexpected(expected”)”


它清楚地看到了我的python可执行文件,并试图运行它,但确实出现了某种解析错误。有什么好处?有没有什么方法可以像对付vanilla spark集群那样,将live python可执行文件传递到dataproc中?

结果表明,我是在操作系统之间分发python二进制文件的,并且头脑发热,以至于没有注意到我正在这样做,而不兼容导致了崩溃