将 Spark 集群配置为 Spark-standalone 后,我们尝试配置 Spark-Submit 作业以利用 Pipenv 管理的虚拟环境。
该项目具有以下结构:
project/
|-- .venv/
|--bin/python
|--lib/python3.6/site-packages
|-- src/
|-- app.py
Run Code Online (Sandbox Code Playgroud)
当前的尝试涉及压缩虚拟环境 ( zip -r site.zip .venv) 以包含 python 可执行文件和所有站点包,并将其发送给执行器。
目前spark-submit命令是:
PYSPARK_DRIVER_PYTHON=./.venv/bin/python \
spark-submit --py-files site.zip src/app.py
我们的想法是,--py-files参数应该将 site.zip 解压缩到执行器上的工作目录中,并且.venv应该使用.venv/bin/pythonpython 路径上可用的 site-packages 进行重现。显然情况并非如此,因为我们收到了错误:
org.apache.spark.SparkException: Job aborted due to stage failure:
Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task
0.3 in stage 0.0 (TID 3, [executor-node-uri], executor 0):
java.io.IOException: Cannot run …Run Code Online (Sandbox Code Playgroud)