You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark分发Python包至Executor节点遇路径不存在错误求助

问题描述

按照Spark官方文档创建虚拟环境tar包,用于分发至EMR YARN集群的Executor节点,操作步骤如下:

  • 创建并激活虚拟环境:
python -m venv pyspark_venv
source test_env/bin/activate  # 注意:创建的虚拟环境为pyspark_venv,但激活的是test_env,存在名称不匹配的问题
pip install quote venv-pack
venv-pack -o test_env.tar.gz
  • 通过SCP将tar包上传至EMR主节点后,执行spark-submit命令:
spark-submit \
--master yarn \
--deploy-mode cluster \
--archives test_env.tar.gz#environment \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python \
app_venv.py

已在spark-env.sh中通过export配置Python路径,但任务抛出以下错误:

Caused by: java.io.IOException: Cannot run program "./environment/bin/python": error=2, No such file or directory

环境为EMR集群,使用竞价节点无法手动在所有节点安装依赖,寻求解决方案。

解决方案

1. 修正虚拟环境创建/激活的名称不匹配问题

创建的虚拟环境名称是pyspark_venv,但激活的是test_env,会导致依赖包未安装到目标虚拟环境,打包的tar包内容缺失。修正步骤:

python -m venv pyspark_venv
source pyspark_venv/bin/activate
pip install quote venv-pack
venv-pack -o pyspark_venv.tar.gz

2. 补充Executor节点的Python环境配置

仅配置spark.yarn.appMasterEnv只会覆盖Application Master的Python路径,Executor节点的Python路径未指定,需添加spark.executorEnv.PYSPARK_PYTHON配置:

spark-submit \
--master yarn \
--deploy-mode cluster \
--archives pyspark_venv.tar.gz#environment \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python \
--conf spark.executorEnv.PYSPARK_PYTHON=./environment/bin/python \
app_venv.py

3. 确保虚拟环境与EMR节点系统兼容

  • 必须在同架构同系统的Linux机器(如EMR主节点)上创建虚拟环境,避免本地(Mac/Windows)打包的Python二进制文件无法在EMR Linux节点运行。
  • 若在本地打包,需指定与EMR节点匹配的Python路径(版本、架构一致):
venv-pack -o pyspark_venv.tar.gz --python=/usr/bin/python3

4. 使用HDFS路径存储虚拟环境包

避免SCP到主节点的路径问题,推荐将tar包上传至HDFS,提交任务时使用HDFS路径:

# 上传tar包到HDFS
hdfs dfs -put pyspark_venv.tar.gz /user/hadoop/
# 提交任务
spark-submit \
--master yarn \
--deploy-mode cluster \
--archives hdfs:///user/hadoop/pyspark_venv.tar.gz#environment \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python \
--conf spark.executorEnv.PYSPARK_PYTHON=./environment/bin/python \
app_venv.py

5. 验证tar包内容完整性

解压tar包检查是否存在目标Python文件:

tar -tf pyspark_venv.tar.gz | grep bin/python

若不存在,说明打包过程有误,需重新执行虚拟环境创建和打包步骤。


内容的提问来源于stack exchange,提问作者Sanket Sanath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:17:24