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

Run specific virtualenv on dataproc cluster at spark-submit like in vanilla Spark

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

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

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

然后,只要我运行

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

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

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 可执行文件,并试图 运行 反对它,但似乎确实存在某种解析错误。是什么赋予了?有没有什么方法可以将实时 python 可执行文件传递给 dataproc,就像你可以对付 vanilla spark 集群一样?

事实证明我正在跨操作系统分发 python 二进制文件,并且愚蠢到没有注意到我正在这样做,并且不兼容导致了崩溃。