当我在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?
答案 0 :(得分:1)
原来我在操作系统中分发python二进制文件,并且已经愚蠢到没有注意到我这样做了,并且不兼容性导致了崩溃。