运行 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 二进制文件,并且愚蠢到没有注意到我正在这样做,并且不兼容导致了崩溃。
当我运行在 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 二进制文件,并且愚蠢到没有注意到我正在这样做,并且不兼容导致了崩溃。